Chinaunix

标题: 一个关于信号的问题 [打印本页]

作者: keanlee    时间: 2004-06-25 15:27
标题: 一个关于信号的问题
我遇到这样一个问题:对于SIGCLD信号,系统默认的忽略和显式声明忽略(signal(SIGCLD,SIG_IGN))作用不同。
问题是:“系统默认的忽略”在系统接收到SIGCLD信号后做如何处理?
作者: lenovo    时间: 2004-06-25 15:56
标题: 一个关于信号的问题
为什么不用SIGCHLD信号,
这个信号不被推荐使用。
作者: keanlee    时间: 2004-06-25 16:02
标题: 一个关于信号的问题
为什么不用SIGCHLD信号,
这个信号不被推荐使用。

关键问题是系统的忽略会做如何处理!
作者: lenovo    时间: 2004-06-25 16:07
标题: 一个关于信号的问题
自己写一个小程序试一试不就知道了。
作者: keanlee    时间: 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函数,按照系统默认,就会产生僵尸。
作者: lenovo    时间: 2004-06-25 16:29
标题: 一个关于信号的问题
呵呵,这就对了。
作者: keanlee    时间: 2004-06-25 16:32
标题: 一个关于信号的问题
老大,这两者有何区别?系统所谓的默认处理对SIGCLD信号做了什么?(修改一下:默认忽略处理)
作者: lenovo    时间: 2004-06-25 16:40
标题: 一个关于信号的问题
默认处理什么也没做,
结果不是很明显嘛,产生了僵尸进程。




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