BSD_SIGNAL - Linux手册页

时间:2019-08-20 17:59:55  来源:igfitidea点击:

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)。

InterfaceAttributeValue
bsd_signal()Thread safetyMT-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/