signal和sigaction的区别
2012-09-10 18:54
281 查看
下面所指的signal都是指以前的older signal函数,现在大多系统都用sigaction重新实现了signal函数
1、signal在调用handler之前先把信号的handler指针恢复;sigaction调用之后不会恢复handler指针,直到再次调用sigaction修改handler指针。
:这样,(1)signal就会丢失信号,而且不能处理重复的信号,而sigaction就可以。因为signal在得到信号和调用handler之间有个时间把handler恢复了,这样再次接收到此信号就会执行默认的handler。(虽然有些调用,在handler的以开头再次置handler,这样只能保证丢信号的概率降低,但是不能保证所有的信号都能正确处理)
2、signal在调用过程不支持信号block;sigaction调用后在handler调用之前会把屏蔽信号(屏蔽信号中自动默认包含传送的该信号)加入信号中,handler调用后会自动恢复信号到原先的值。
(2)signal处理过程中就不能提供阻塞某些信号的功能,sigaction就可以阻指定的信号和本身处理的信号,直到handler处理结束。这样就可以阻塞本身处理的信号,到handler结束就可以再次接受重复的信号。
3、sigaction提供了比signal多的多的功能,可以参考man
1、signal在调用handler之前先把信号的handler指针恢复;sigaction调用之后不会恢复handler指针,直到再次调用sigaction修改handler指针。
:这样,(1)signal就会丢失信号,而且不能处理重复的信号,而sigaction就可以。因为signal在得到信号和调用handler之间有个时间把handler恢复了,这样再次接收到此信号就会执行默认的handler。(虽然有些调用,在handler的以开头再次置handler,这样只能保证丢信号的概率降低,但是不能保证所有的信号都能正确处理)
2、signal在调用过程不支持信号block;sigaction调用后在handler调用之前会把屏蔽信号(屏蔽信号中自动默认包含传送的该信号)加入信号中,handler调用后会自动恢复信号到原先的值。
(2)signal处理过程中就不能提供阻塞某些信号的功能,sigaction就可以阻指定的信号和本身处理的信号,直到handler处理结束。这样就可以阻塞本身处理的信号,到handler结束就可以再次接受重复的信号。
3、sigaction提供了比signal多的多的功能,可以参考man
相关文章推荐
- 记signal和sigaction的一个区别
- unix环境高级编程(阅读笔记)------signal函数与sigaction的区别
- linux 0.11版本内核中信号signal()和sigaction()的区别
- 源码剖析signal和sigaction的区别
- linux c 之signal 和sigaction区别 (转载)
- APUE学习笔记:Linux下signal和sigaction的使用区别
- linux c 之signal 和sigaction区别
- 信号处理:signal和sigaction的区别
- linux signal, sigaction.sa_mask, sigwait的区别
- Linux信号(signal、sigaction) 机制分析
- STM32-RTX中signal与semaphore的区别
- Linux信号(signal、sigaction) 机制分析
- 为什么使用sigaction而非signal
- linux信号机制之sigaction 浅析,signal 函数,信号捕捉 信号编码意义
- Linux进程间通信(一): 信号 signal()、sigaction()
- signal与sigaction函数使用
- set_dft_signal -view的参数existing_dft和spec有什么区别
- linux信号机制之sigaction结构体浅析,signal 函数,信号捕捉
- Linux内核0.11版本signal.c中sys_signal()和sys_sigaction的理解
- sigaction 和 signal 函数