Saya mencoba mempelajari pemrograman UNIX dan menemukan pertanyaan mengenai fork (). Saya mengerti bahwa fork () menciptakan proses identik dari proses yang sedang berjalan, tetapi di mana ia mulai? Misalnya, jika saya punya kode
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
Outputnya adalah:
Ini jelas merupakan proses induk. Proses
mana yang mencetak ini?
Proses mana yang mencetak ini?
Saya pikir itu fork()
menciptakan proses yang sama, jadi saya awalnya bahwa dalam program itu, fork()
panggilan akan secara rekursif dipanggil selamanya. Saya kira proses baru dibuat dari fork()
awal setelah fork()
panggilan?
Jika saya menambahkan kode berikut, untuk membedakan antara proses induk dan anak,
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
setelah panggilan fork (), di mana proses anak memulai eksekusi?
man fork
cukup yakin untuk menjawab pertanyaan Anda, btw