免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yuonunix

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

论坛徽章:
0
发表于 2003-08-11 13:38 |显示全部楼层

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

父进程退出了,子进程也会退出???

论坛徽章:
0
发表于 2003-08-11 13:41 |显示全部楼层

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

论坛徽章:
0
发表于 2003-08-11 14:17 |显示全部楼层

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

原帖由 "yuonunix" 发表:
   

哦,你的意思是如果父进程退出,子进程如果没有setpgrp,就会收到SIGTERM信号,是吗?我马上尝试一下。谢谢了!
   

为了验证这一点,我编了如下程序:
#include <signal.h>;
#include <sys/types.h>;
#include <unistd.h>;
#include <stdio.h>;
int main(void)
{


   register int pid;
   if((pid = fork())<0)
   {
        printf("error\n";
   }
  else if(pid!=0)
      
  {
    printf("begin sub progress\n";
    execl("/export/home/appsvr/tt/main1",NULL);
  }
  while(1)
{
  };

}

启动父进程后,去查子进程信息
ps -ef|grep main1去查,子进程的进程名称已经不是main1了,请问怎样去查子进程的信息。

论坛徽章:
0
发表于 2003-08-11 14:23 |显示全部楼层

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

[quote]原帖由 "qjlemon"][/quote 发表:
     
父进程退出了,子进程也会退出,此时会收到SIGTERM信号。其意思是:
父进程退出时,子进程会收到SIGTERM信号。(子进程应该能够捕捉到SIGTERM信号)

而qjlemon的例子是:父进程退出,然后父进程捕捉SIGTERM信号,是否和fieryfox的意思不符合呀

论坛徽章:
0
发表于 2003-08-11 14:34 |显示全部楼层

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

good

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-08-11 14:39 |显示全部楼层

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

父进程退出的时候,不会自动发送sigterm信号的。

qjlemon的例子是正确的。信号响应函数对子进程同样有效

论坛徽章:
0
发表于 2003-08-11 15:01 |显示全部楼层

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

所以到现在为止,最简单的方法还是:   

试试开个管道,子进程监视管道是否还开着。不需要实际的读写,只是监视它的状态
或者父进程锁一个文件,子进程如果"不“能得到锁,说明父进程它老人家还健在。

即,要实现准确的判断父进程状态,没有很好的方法,只能这样:

子进程每隔一秒检查一下锁(或者管道),而无法得到通知罗。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-08-11 15:05 |显示全部楼层

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

管道方式是不错,
不过不用不时的poll。

一般网络服务都用select监听io,加到fd_set里就好了。

如果是其它的模式,用异步io,响应sigio信号应该是可以的。

论坛徽章:
0
发表于 2003-08-11 15:45 |显示全部楼层

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

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

论坛徽章:
0
发表于 2003-08-11 15:51 |显示全部楼层

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

试验通过      不过这就只能循环测试了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP