首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

signal的处理函数有关问题

2012-03-17 
signal的处理函数问题有些例子:voidsig_cld(){pid_tpidintstatusif(signal(SIGCLD,sig_cld)!-1){pidwa

signal的处理函数问题
有些例子:
void   sig_cld()   {
        pid_t   pid;
        int   status;
        if   (signal(SIGCLD,sig_cld)!=   -1)   {
                pid   =   wait(&status);
                printf( "%d\n ",pid);
        }
}
为什么sig_cld()中还要调用一次signal(SIGCLD,sig_cld)

[解决办法]
为了避免不可靠信号,早期的unix版本中,在进程每次接到信号对其进行处理时,随即将该信号的动作复位为默认值SIG_DFL,所以在接收到信号的处理函数中立即再设置信号处理函数,防止以前的函数设置丢失!
但按照楼主这样些有可能执行两次处理函数,应该在wait后在设置signal。
情参见《unix环境高级编程 2版》248页。

热点排行
Bad Request.