【发布时间】:2013-09-24 09:30:05
【问题描述】:
我对下面的代码有些疑问。
#include <stdio.h>
#include <sys/types.h>
int main(void)
{
int pid=fork();
if(pid==0) sleep(5);
printf("Hello World %d %d\n",getpid(),pid);
if(pid>0) while(1){sleep(1);}
if(pid==0) printf("In child process!\n");
return 0;
}
子进程会终止吗?它会保持僵尸状态吗?
【问题讨论】:
-
一个在僵尸进程结束时留下来的进程,它的 pid 只是没有从进程列表中删除,以便让父进程有机会注意到子进程的终止。为此,父母应调用
wait()或waitpid()或忽略SIGCHLD信号。
标签: c unix operating-system system-calls zombie-process