Как избежать зомбических процессов? и что именно делает процесс init в этой ситуации?
Я видел эту программу, но не в состоянии получить его: Как эта программа создает процесс зомби:Как избежать процессов зомби? и что именно делает процесс init в этой ситуации?
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void)
{
pid_t p = fork();
if (p != 0)
{
waitpid(p, NULL, 0); /* See if the child already had ended. */
sleep(1); /* Wait 1 seconds for the child to end. And eat away the SIGCHLD in case if arrived. */
pause(); /* Suspend main task. */
}
else
{
sleep(3); /* Just let the child live for some tme before becoming a zombie. */
}
return 0;
}
Что именно вы пытаетесь понять здесь? Какие у вас проблемы с кодом? –
код в порядке. Имеет рабочий код, взятый из некоторой ссылки. Просто хотел, чтобы его объяснение .. То, как это создает процесс зомби. – pankaj
Инициалу нечего делать в этой ситуации. Когда процесс завершается перед ожиданием статуса возврата его порожденных детей, созданные процессы становятся «зомбическими процессами» после завершения, пока init 'ждет. В вашем случае ожидает процесс родительского процесса. Поэтому init не имеет ничего общего. –