Я заинтересован в создании процесса зомби. Насколько я понимаю, процесс зомби происходит, когда родительский процесс выходит из процесса перед детьми. Тем не менее, я попытался воссоздать процесс зомби, используя следующий код:Создать зомби-процесс
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t child_pid;
child_pid = fork();
if (child_pid > 0) {
exit(0);
}
else {
sleep(100);
exit (0);
}
return 0;
}
Однако этот код выходит сразу после выполнения, который, как ожидается. Однако, как я
ps aux | grep a.out
Я нашел a.out просто работает как нормальный процесс, а не процесс зомби, как я ожидал.
ОС я использую Ubuntu 14,04 64 бит
Ваш код в вопросе не создает процесс зомби, потому что в вашем коде, родительский процесс выходов сначала, пока ребенок продолжает работать. (Помните, что fork() возвращает 0 в дочернем процессе и PID дочернего элемента в родительском процессе.) Чтобы увидеть процесс зомби, вам нужно заставить ребенка выйти, пока родитель все еще жив, но не дождался ребенка. Если вы просто измените строку 10 вашего кода с 'if (child_pid> 0)' на 'if (child_pid == 0)', он «исправит» ваш код, и вы сможете увидеть процесс зомби, когда ребенок выходы процесса. –