1
Я писал программы для создания процесса зомби (с целью обучения).Как создать процесс зомби?
int main(int argc, char *argv[]) {
int i = ::fork();
if(i == 0) sleep(30);
else printf("process %d/%d\n", getpid(), i);
return 0;
}
Приведенный выше код вызова fork
без waitpid
на дочернем процессе. Однако после запуска этого кода я использую ps aux | grep 'Z'
, пытаясь найти процесс зомби. Я ничего не видел. Детский процесс появляется в списке процессов, и вскоре после 30 секунд (sleep
) он исчез, и я ничего не обнаружил со статусом 'Z'
в списке процессов. Создает ли этот код процесс зомби?
Вы не создали зомби, вы создали сироту. – EOF
Как создать зомби в этом случае? – Jes
Итак, если родитель умирает перед ребенком, ребенок становится сиротой (достаточно очевидно). Если ребенок умирает перед родителем, ребенок превращается в зомби, пока родительский 'wait()' s для него. – EOF