Chinaunix

标题: 一个关于信号屏蔽的问题,比较麻烦,请大家帮忙 [打印本页]

作者: eggking1102    时间: 2009-03-30 09:24
标题: 一个关于信号屏蔽的问题,比较麻烦,请大家帮忙
我写了一个c程序 1.c
在程序中,适用system调用了脚本启动 2.c 这个程序
然后在其他地方又适用system调用kill杀掉 2.c 的进程

但是,在kill掉2.c的时候,会把 1.c 也杀掉

我使用
   sigset_t hupSigs;
    sigfillset(&hupSigs);
    sigprocmask(SIG_BLOCK,&hupSigs,NULL);

屏蔽信号
但是,信号时屏蔽了,kill这个命令执行就不起作用了。。。

请大家帮帮忙,怎么才能在kill 2.c 这个进程的时候,1.c 不会退出,还后kill正确执行
谢谢。
作者: eggking1102    时间: 2009-03-30 11:27
怎么都没人帮我啊。。。555555555555555
作者: angle4    时间: 2009-03-30 13:09
我觉得你应该,fork一个子进程,让子进程去执行2.c的二进制文件,然后在其他地方通过kill(pid, signo)把2.c的二进制程序结束了
作者: flynetcn    时间: 2009-03-30 13:28
system能得到子进程的pid吗?那kill发送给了子进程还是进程组?
如果是发送给了进程组,那可能是system的实现有问题。
见apue2, Figure 10.28. Correct POSIX.1 implementation of system function
作者: Sorehead    时间: 2009-03-30 15:00
1、c有函数kill,而不用通过system来实现。
2、1.c的退出与2.c没有什么关系,应该是程序本身的问题。
作者: angle4    时间: 2009-03-30 21:06
为啥非要用 system??
exec也可以啊
作者: eggking1102    时间: 2009-03-31 16:26
谢谢大家了,问题解决了
作者: eggking1102    时间: 2009-04-01 10:09
谢谢。。。已经解决了
从别的地方解决的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2