UNIX programlamasını öğrenmeye çalışıyorum ve fork () ile ilgili bir soru ile karşılaştım. Ben fork () şu anda çalışan sürecin özdeş bir işlem oluşturduğunu anlıyorum, ama nerede başlıyor? Örneğin, kodum varsa
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);
}
Çıktı:
Bu kesinlikle ana süreçtir
Bu süreç hangi süreci basar?
Bunu hangi süreç bastırdı?
fork()
Aynı işlemi yarattığını düşündüm , bu yüzden başlangıçta bu programda fork()
çağrının tekrarlı olarak çağrılacağını düşündüm . Sanırım aramadan fork()
sonra başlayan yeni süreç fork()
?
Bir üst ve alt işlem arasında ayrım yapmak için aşağıdaki kodu eklersem,
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 ());
fork () çağrısından sonra, çocuk süreci yürütmeye nerede başlar?
man fork
sorunuzu cevaplamak için yeterince emin, btw