BSD_SIGNAL - Linux手册页
Linux程序员手册 第3部分
更新日期: 2019-03-06
名称
bsd_signal-使用BSD语义的信号处理
语法
#包括
typedef void(* sighandler_t)(int);
sighandler_t bsd_signal(int signum,sighandler_t handler);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
bsd_signal():
- 从glibc 2.26开始: _XOPEN_SOURCE>= 500 &&! (_POSIX_C_SOURCE>= 200809L) Glibc 2.25和更早版本: _XOPEN_SOURCE
说明
bsd_signal()函数采用与signal(2)相同的参数,并执行相同的任务。
两者之间的区别在于,保证bsd_signal()提供可靠的信号语义,即:a)调用处理程序时,信号的设置不会重置为默认值; b)在信号处理程序执行期间,阻止了其他信号实例的传递; c)如果处理程序中断了阻塞的系统调用,则系统调用将自动重新启动。便携式应用程序不能依靠signal(2)提供这些保证。
返回值
bsd_signal()函数返回信号处理程序的先前值,如果出错则返回SIG_ERR。
错误说明
至于信号(2)。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
bsd_signal() | Thread safety | MT-Safe |
遵循规范
4.2 BSD,POSIX.1-2001。 POSIX.1-2008删除了bsd_signal()的规范,建议改为使用sigaction(2)。
备注
应避免使用bsd_signal();请改用sigaction(2)。
在现代Linux系统上,bsd_signal()和signal(2)是等效的。但是在较旧的系统上,signal(2)提供了不可靠的信号语义;有关详细信息,请参见signal(2)。
sighandler_t的使用是GNU扩展;仅当定义了_GNU_SOURCE功能测试宏时,才定义此类型。
另外参见
sigaction(2),signal(2),sysv_signal(3),signal(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。