Dict.CN 在线词典, 英语学习, 在线翻译

学海苦作舟,书山勤为径

留下点回忆

常用链接

统计

积分与排名

Denoise

English study

Web技术

数据压缩

一些连接

最新评论

Linux为什么要设计一个“僵尸进程”状态?

最近看Linux进程状态,其中描述一个僵尸进程状态,这种状态下进程已经不能执行了,只保留一个记录,而这样做的目的是让其父亲进程知道其状态;但有的父进程不关心这样子进程,因此可能导致有些进程一直处于僵死状态。

那么我想到一个问题:为什么设计这样一个状态而不强制父进程必须了解它?另外,父进程没有其他办法知道其子进程了吗?

posted on 2011-05-23 23:08 笨笨 阅读(2361) 评论(12)  编辑 收藏 引用 所属分类: Linux

评论

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-24 12:34 nevergone

因为linus是僵尸:-(  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-24 14:03 笨笨

@nevergone
呵呵  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-24 17:10 巫云

既然是父进程派生出来的,应该知道啊。  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-24 17:14 sxpropeht

打个比方,你跟你老婆生了孩子,谁来养活孩子?
在世界各国都是你们俩的义务
  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-24 21:38 笨笨

@sxpropeht
这个比方不恰当,这个新的进程已经不需要主进程养活了。另外,这个进程已经死了,还需要等待父进程来处理,而同时系统也不强制父进程必须处理。
这才是我像了解的。。  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-25 10:58 hstcscolor

@笨笨

一个父进程派生了一个子进程, 那么这个父进程有可能想知道,子进程的终止状态。如果父进程没有获取这个状态,那么子进程就变为zombie,直到父进程用wait来获取。如果没有这个状态,子进程直接结束。那么父进程就不会知道子进程的终止状态了。这个终止状态以用来判断子进程终止的原因,有些时候还是挺重要的。比如 ,是不是正常终止,是由什么信号终止的。。。详细说明可以参考unix高级环境编程 第八章进程控制,第六节  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-25 15:23 巫云

我想笨笨想问的是为什么父进程不被强制要求处理,如果不处理有什么不好的后果。  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-25 16:47 笨笨

@hstcscolor
谢谢你的详细解释。
不过我想父进程除了使用wait之外就没有办法知道子进程的状态了吗?
(我对linux不是很熟悉)  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-25 16:49 笨笨

@巫云
我基本上是这个意思;既然有僵尸进程带来的缺点,为什么不强制设置必须让每个主进程等待。。。难道是为了避免父进程先退出的尴尬?貌似渐渐有些能理解了。。。  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态?[未登录] 2011-05-25 18:22 vincent

我觉得还有一个有意思的语意
既然是从你这fork的,你必然关注啊
不然的话就没从你这fork的意义了  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-05-26 19:28 易宝@byhh

wait() 获取子进程的退出状态。若无,则阻塞。

我觉得设计的挺好的。

  回复  更多评论   

# re: Linux为什么要设计一个“僵尸进程”状态? 2011-12-06 09:51 Onway

其实可以使用sigaction捕捉SIGCHLD信号,并设置flag标志使其不产生僵死子进程的。
如果强制父进程必须了解子进程的状态,我觉得这才不好,正如你所说的,有的父进程并不关心它的子进程。而且父进程先结束的话,子进程是会被init进程领养的。
我觉得不是因为父进程fork了一个子进程就必须了解它。
了解与不了解,由父进程自己决定,这不是很好么?  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理