Vikipedi diyor ki: "Sona eren ama asla ebeveyn tarafından beklemeyen bir çocuk süreci bir zombi süreci haline gelir." Ben bu programı çalıştırın: Bu bir zombi sürecini oluştururNeden zombi işlemleri var?
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid, ppid;
printf("Hello World1\n");
pid=fork();
if(pid==0)
{
exit(0);
}
else
{
while(1)
{
printf("I am the parent\n");
printf("The PID of parent is %d\n",getpid());
printf("The PID of parent of parent is %d\n",getppid());
sleep(2);
}
}
}
ama bir zombi süreci burada oluşturulur neden anlamıyor?
programın çıktısı
Hello World1
I am the parent
The PID of parent is 3267
The PID of parent of parent is 2456
I am the parent
The PID of parent is 3267
The PID of parent of parent is 2456
I am the parent
....
.....
olduğunu Ama neden "çocuk süreç sona erer ancak ebeveyn tarafından bekledi değil" bu durumda bu?
pid=fork();
if (pid==0) {
exit(0); // <--- zombie is created on here
} else {
// some parent code ...
}
Neden: Kodunuzda
Soruyor musun? Öyle görünüyor ki, gördüğüm sorunun tek cevabı "çünkü zombi süreçleri böyle tanımlanıyor". –
** "zombi işleminin neden burada yaratıldığını anlayamadım" ** Bunun nedeni, çocuğun çıkış durumunu okumak için wait() 'yi çağırmamanız ve dolayısıyla işlem tablosunda girişinin kalmasıdır. . –
Thats tamam. Ama çocuk bir süre için çalışır ve orada herhangi bir zombi yok – user567879