免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 863 | 回复: 7
打印 上一主题 下一主题

一个关于信号的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-25 15:27 |只看该作者 |倒序浏览
我遇到这样一个问题:对于SIGCLD信号,系统默认的忽略和显式声明忽略(signal(SIGCLD,SIG_IGN))作用不同。
问题是:“系统默认的忽略”在系统接收到SIGCLD信号后做如何处理?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-06-25 15:56 |只看该作者

一个关于信号的问题

为什么不用SIGCHLD信号,
这个信号不被推荐使用。

论坛徽章:
0
3 [报告]
发表于 2004-06-25 16:02 |只看该作者

一个关于信号的问题

为什么不用SIGCHLD信号,
这个信号不被推荐使用。

关键问题是系统的忽略会做如何处理!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-06-25 16:07 |只看该作者

一个关于信号的问题

自己写一个小程序试一试不就知道了。

论坛徽章:
0
5 [报告]
发表于 2004-06-25 16:21 |只看该作者

一个关于信号的问题

我写了。

程序很简单:
#include <stdio.h>;
#include <stdlib.h>;
#include <signal.h>;

int main()
{
int i;       
int proc;

       signal(SIGCHLD,SIG_IGN);
       proc=fork();
        if(proc<0)
                    {
                           printf("\tfork进程失败!\n";
                           return -1;
                           
                    }
                                     
                   
                    if(proc==0)
                {
                        printf("fork ok!\n";
                                                   
                                    exit(0);
                                               
                }
        
      
        sleep(60);        
       exit(0);

}

如果有通过signal函数声明,不会产生僵尸;如果去掉signal函数,按照系统默认,就会产生僵尸。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-06-25 16:29 |只看该作者

一个关于信号的问题

呵呵,这就对了。

论坛徽章:
0
7 [报告]
发表于 2004-06-25 16:32 |只看该作者

一个关于信号的问题

老大,这两者有何区别?系统所谓的默认处理对SIGCLD信号做了什么?(修改一下:默认忽略处理)

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-06-25 16:40 |只看该作者

一个关于信号的问题

默认处理什么也没做,
结果不是很明显嘛,产生了僵尸进程。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP