留下点回忆
posted on 2011-05-23 23:08 笨笨 阅读(2361) 评论(12) 编辑 收藏 引用 所属分类: Linux
因为linus是僵尸:-( 回复 更多评论
@nevergone 呵呵 回复 更多评论
既然是父进程派生出来的,应该知道啊。 回复 更多评论
打个比方,你跟你老婆生了孩子,谁来养活孩子?在世界各国都是你们俩的义务 回复 更多评论
@sxpropeht 这个比方不恰当,这个新的进程已经不需要主进程养活了。另外,这个进程已经死了,还需要等待父进程来处理,而同时系统也不强制父进程必须处理。 这才是我像了解的。。 回复 更多评论
@笨笨一个父进程派生了一个子进程, 那么这个父进程有可能想知道,子进程的终止状态。如果父进程没有获取这个状态,那么子进程就变为zombie,直到父进程用wait来获取。如果没有这个状态,子进程直接结束。那么父进程就不会知道子进程的终止状态了。这个终止状态以用来判断子进程终止的原因,有些时候还是挺重要的。比如 ,是不是正常终止,是由什么信号终止的。。。详细说明可以参考unix高级环境编程 第八章进程控制,第六节 回复 更多评论
我想笨笨想问的是为什么父进程不被强制要求处理,如果不处理有什么不好的后果。 回复 更多评论
@hstcscolor 谢谢你的详细解释。 不过我想父进程除了使用wait之外就没有办法知道子进程的状态了吗? (我对linux不是很熟悉) 回复 更多评论
@巫云 我基本上是这个意思;既然有僵尸进程带来的缺点,为什么不强制设置必须让每个主进程等待。。。难道是为了避免父进程先退出的尴尬?貌似渐渐有些能理解了。。。 回复 更多评论
我觉得还有一个有意思的语意 既然是从你这fork的,你必然关注啊 不然的话就没从你这fork的意义了 回复 更多评论
wait() 获取子进程的退出状态。若无,则阻塞。我觉得设计的挺好的。 回复 更多评论
其实可以使用sigaction捕捉SIGCHLD信号,并设置flag标志使其不产生僵死子进程的。如果强制父进程必须了解子进程的状态,我觉得这才不好,正如你所说的,有的父进程并不关心它的子进程。而且父进程先结束的话,子进程是会被init进程领养的。我觉得不是因为父进程fork了一个子进程就必须了解它。了解与不了解,由父进程自己决定,这不是很好么? 回复 更多评论
Powered by: C++博客 Copyright © 笨笨