免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: tom2zhang
打印 上一主题 下一主题

fork以后父进程退出子进程会收到信号么? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-04-27 14:55 |只看该作者

fork以后父进程退出子进程会收到信号么?

原帖由 "win_hate" 发表:

不要胡说,要看清楚别人问什么。楼主问的是: 父进程死了 与 子进程收到信号 之间是否有因果关系。

如果你贴出来的算,那么父进程死后,你向子进程 kill 一个,这样算不算?

我没有胡说啊。举个例子来说,如果你登陆到某个系统,从你自己的login shell命令行启动了一个程序,该程序未退出前,你用另外的一个telnet session登录到同一个系统,查出刚刚那次登陆的login shell的pid,用kill命令将那个shell杀掉,这时候再ps,你会发现刚才你启动的那个程序也被终止了,原因就在于那个程序是那个login shell的子进程,你在杀掉那个login shell的时候,那个还没运行完的程序收到了SIGHUP,SIGHUP的缺省行为是终止收到该信号的进程,所以你的程序也就被强行终止了。

父进程(也就是那个login shell,同时也是那个控制终端的终端控制进程)退出, 直接导致了其子进程收到SIGHUP,这就是父进程结束导致子进程收到信号的例子, 属于我所说的第一种情况啊, 怎么能说我是在胡说呢?

论坛徽章:
0
12 [报告]
发表于 2005-04-27 15:01 |只看该作者

fork以后父进程退出子进程会收到信号么?

第二种情况我也有现成的例子(都是已经调试通过的例子),因为只要那个退出的进程,恰巧是孤儿进程组中某些进程的父进程,就可以认为是父进程的退出导致子进程收到了信号。我刚才不愿意把这个例子贴出来,是因为这个例子里面包含了较多复杂的UNIX进程关系/终端控制/信号的概念,对于一个对UNIX编程环境掌握的不是非常清楚的人来说,可能看了之后会更糊涂。

论坛徽章:
0
13 [报告]
发表于 2005-04-27 15:11 |只看该作者

fork以后父进程退出子进程会收到信号么?

唉……没想到这么认真看、认真想过之后回帖,还被斑竹归类为“胡说”,真让人寒心。

眼看chinaunix的C++版一步一步衰落到现在的这种程度,认真的回帖,也是为了chinaunix的C++版的名声,却被一棒子打死,真让人寒心!

win_hate,我以后再不会来这里“胡说”了,你可以放心。不过我真诚地希望你以后看过别人的帖子之后,也认真想想再评论,别用这种方式把热心的版友都赶走。

论坛徽章:
0
14 [报告]
发表于 2005-04-27 15:18 |只看该作者

fork以后父进程退出子进程会收到信号么?

原帖由 "chg.s" 发表:

我没有胡说啊。举个例子来说,如果你登陆到某个系统,从你自己的login shell命令行启动了一个程序,该程序未退出前,你用另外的一个telnet session登录到同一个系统,查出刚刚那次登陆的login shell的pid,用kill命..........


其实呀,你的确基本上是在胡说.子进程退出后发送SIGCHLD是肯定的,而父进程结束发送信号只是某些情况下的个案。

论坛徽章:
0
15 [报告]
发表于 2005-04-28 21:28 |只看该作者

fork以后父进程退出子进程会收到信号么?

chg.s说的很对.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP