Witam, mam za zadanie stworzyć prosty program w C , który stworzy proces zombie przy użyciu fork, a potem odbierze status procesu funkcją wait, tak, że dziecko nie będzie już w stanie zombie, ale po prostu zakonczy działanie ( rodzic odbierze sygnał funkcją wait ) poniżej zamieszczam skrypt znaleziony, który edytowałem ale to nie działa jak powinno :
# include <stdio.h>
int main()
{
int pid;
pid=getpid();
printf("Current Process ID is : %d\n",pid);
printf("[ Forking Child Process ... ] \n");
pid=fork(); /* This will Create Child Process and
Returns Child's PID */
sleep(10);
if(pid < 0)
{
/* Process Creation Failed ... */
exit(1);
}
else if(pid==0)
{
/* Child Process */
printf("Child Process Started ...\n");
printf("Child Process Completed ...\n");
waitpid(pid);
printf("Odebrałem status rodzica");
}
else
{
/* Parent Process */
printf("Parent Process Running ... \n");
printf("I am In Zombie State ...\n");
sleep(10);
}
sleep(10);
return 0;
}
W czasie działania sparwdzam w konsoli listę procesów ps -ef :
michal 2878 2490 0 22:48 pts/1 0000 ./a.out
michal 2879 2878 0 22:48 pts/1 0000 ./a.out
Czyli nie ma żadnego zombie przez cały czas działania tego programu. Jak to poprawić ?