signal函数的缺点

signal函数的缺点:
1.函数的原型
    typedef void(*sighandler_t)(int);
    sighandler_t signal(int signum, sighandler_t  handler);
    其中handler指定当信号signum发生时的行为,可取以下三个值:SIG_IGN,SIG_DEL,函数地址。
2.当一个信号发生时,根据handler取值的不同,相应的行为也不同:
* 如果handler为SIG_IGN,就忽略这个信号
* 如果handler为SIG_DEL,就采取默认动作
* 如果handler被指定为一个函数地址,首先可能会发生这两种情况之一:要么将此信号的行为重置为SIG_DEL,要么阻塞这个信号
然后,才执行对应的信号处理函数,并且如果是阻塞这个信号的话,当从处理函数返回时,就解阻塞此信号。

注意: 在多线程中,signal的作用是未定的。(the effects of signal() in a multithreaded process are unspecified)

可移植性问题:
* 只有将信号的动作设置为SIG_DEL或SIG_IGN时,signal函数才是可移植的。
*  当信号发生时,到底是重置为SIG_DEL,还是阻塞此信号,在不同的系统上是不同的。因此要使用sigaction而不是signal。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值