免费注册 查看新帖 |

Chinaunix

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

子进程及时知道父进程已经退出的最简单方案? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2003-08-11 15:57 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

楼主要在kill -9的情况下都行,只能这样了。如果不是-9,还可以用信号USR1一类的方法。

论坛徽章:
0
22 [报告]
发表于 2003-08-11 16:13 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

原帖由 "fieryfox" 发表:
faint,搞错了。当console了。
既然这样,那也不需要什么IPC,用getppid监控ppid的值,什么时候为1 了,父进程就退出了。
   

这个方法确实是所有方法中最简单的方法,如果求简单,就可以用这个了,如果求效率,可能就是如gadfly所言,用管道,然后select一把,所花的CPU应该是最小的了。

论坛徽章:
0
23 [报告]
发表于 2003-08-12 11:28 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

我再问个相关问题,如果C是B的子进程,B是A的子进程,C可以通过getppid知道 B 的状态,B可以通过getppid知道A的状态,那么C怎样可以知道A的状态(A是否已经退出)呢?我现在想到的解决办法是getppid 和 kill -USR1相结合,

孙子直接获取祖父进程的状态,好像没有比“getppid + kill -USR1”更简单的方法,各位是否这样认为?

论坛徽章:
0
24 [报告]
发表于 2003-08-12 11:46 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

你在做什么应用,怎么会有这样的需求?

论坛徽章:
0
25 [报告]
发表于 2003-08-12 12:52 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

原帖由 "gadfly" 发表:
父进程退出的时候,不会自动发送sigterm信号的。

qjlemon的例子是正确的。信号响应函数对子进程同样有效
   
你这句话只对了一半,信号响应函数对子进程不是全有效的。而在上面的例子里,恰好是无效的。看完下面的就会明白。
Signals set to the default action (SIG_DFL) in  the  calling
     process  image are set to the default action in the new pro-
     cess image (see signal(3C)).
      Signals set to be ignored (SIG_IGN) by the calling  process
     image  are  set to be ignored by the new process image. Sig-
     nals set to be caught by the calling process image  are  set
     to  the  default  action  in  the  new  process  image  (see
     signal(3HEAD)).  After a successful call to any of the  exec
     functions, alternate signal stacks are not preserved and the
     SA_ONSTACK flag is cleared for all signals.

论坛徽章:
0
26 [报告]
发表于 2003-08-12 12:55 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

你自己试一下那段代码就知道了。

论坛徽章:
0
27 [报告]
发表于 2003-08-12 12:57 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

[quote]原帖由 "fieryfox"]你在做什么应用,怎么会有这样的需求?[/quote 发表:
     
我在做点Solaris上的研究。

论坛徽章:
0
28 [报告]
发表于 2003-08-12 12:59 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

fork和exec是有重大区别的

论坛徽章:
0
29 [报告]
发表于 2003-08-12 13:31 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

[quote]原帖由 "qjlemon"]fork和exec是有重大区别的[/quote 发表:
     我尝试了一下,发现如此注册的信号,的确对父亲进程和孩子进程都有效,不好意思,我混淆了exec、fork对信号的处理方式,谢谢qjlemon。

论坛徽章:
0
30 [报告]
发表于 2003-08-12 13:33 |只看该作者

子进程及时知道父进程已经退出的最简单方案?

不要光看书
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP