详见: http://cocre.com/?p=656 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99982/showart_2000008.html
当一个程序创建的子进程比父进程提前结束,内核仍然保存一些它的信息以便父进程会需要它 - 比如,父进程可能需要检查子进程的退出状态。为了得到这些信息,父进程调用‘wait()’;当这个调用发生,内核可以丢弃这些信息。 在子进程终止后到父进程调用‘wait()’前的时间里,子进程被称为‘僵死进程’(‘zombie’)。(如果你用‘ps’,这个子进程会有一个‘Z’出现在它的状态区里指出这点。)即使它没有在执行,它仍然占据进程表里...
本帖最后由 bsknight 于 2011-02-20 17:22 编辑 [code] #define PSCMD "ps -o pid,ppid,state,tty,command" int main(void) { pid_t pid; if ((pid = fork()) < 0) err_sys("fork error"); else if (pid == 0) /* child */ exit(0); /* parent */ system(PSCMD); abort(); } [/code]为什么结果中,子进程变成了zombie? 主进程是在system(PSCMD);之后被终止,...
int main() { pid_t pid; int status; if ((pid = fork()) < 0){ exit(1); } if (pid > 0) { printf("I am P \n"); sleep(10); } if (pid == 0){ printf("I am C \n"); exit(0); } } 子进程先是zombie,等父进程退出后它也退出了 我在父进程并没有wait,谁回收了zombie的子进程的呢?
linux为什么会设计这样一种进程?一个进程退出时为什么不去检查它自己的子进程是否有zombie的,还要让init进程去clean up。 谁能讲讲zombie进程的设计初衷阿?
linux为什么会设计这样一种进程?一个进程退出时为什么不去检查它自己的子进程是否有zombie的,还要让init进程去clean up。 谁能讲讲zombie进程的设计初衷阿?
我是个新手,刚刚接触linux系统,现在机器在做并行作业时老是出现错误。产生了好多defunct进程和zombie进程,用kill -9 xxxxx根本杀不掉,系统没有反应了,连账户都登不进去了。求助各位大侠帮帮忙,告诉我该怎么解决?急等。 我系统是red hat enterprise linux 3。 [ 本帖最后由 浮山上的礁石 于 2006-7-27 15:25 编辑 ]
我是个新手,刚刚接触linux系统,现在机器在做并行作业时老是出现错误。产生了好多defunct进程和zombie进程,用kill -9 xxxxx根本杀不掉,系统没有反应了,连账户都登不进去了。求助各位大侠帮帮忙,告诉我该怎么解决?急等。 我系统是red hat enterprise linux 3。 [ 本帖最后由 浮山上的礁石 于 2006-7-27 15:25 编辑 ]