侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

bsd_signal函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 45 阅读 / 395 字 / 正在检测是否收录...

bsd_signal函数用法详解

bsd_signal函数简介

  • 头文件包含
#include <signal.h>
  • 函数定义
typedef void (*sighandler_t)(int);
sighandler_t bsd_signal(int  signum , sighandler_t  handler );

bsd_signal函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘bsd_signal’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <signal.h>

bsd_signal函数详细描述

bsd_signal ()函数接受与signal (2)相同的参数,并执行相同的任务
两者之间的区别在于,bsd_signal ()被保证提供可靠的信号语义,即:a)当调用处理程序时,信号的处理不被重置为默认值;b)当信号处理程序执行时,信号的进一步实例的传递被阻塞;以及c)如果处理程序中断阻塞系统调用,则系统调用自动重新启动。便携应用程序不能依赖signal (2)来提供这些保证。

bsd_signal函数返回值

bsd_signal ()函数返回信号处理程序的前一个值,或者在错误时返回 SIG_ERR

bsd_signal函数错误码

至于signal (2)

bsd_signal函数其他说明

应避免使用bsd_signal ();改用sigaction (2)。
在现代Linux系统上,bsd_signal ()和signal (2)是等效的。但是在旧的系统上,signal (2)提供了不可靠的信号语义;详见signal (2)。
sighandler_t的使用是一个GNU扩展;只有在定义了 _GNU_SOURCE 特性测试宏的情况下才定义此类型。

0

评论区