X64站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2960|回复: 31

signal 函数文档

  [复制链接]
  • TA的每日心情
    擦汗
    2023-12-22 12:28
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    122

    主题

    257

    帖子

    6902

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    6902

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2023-12-8 14:32:58 | 显示全部楼层 |阅读模式
    signal 函数文档


    函数概要:

    signals 函数用于设置具体的信号编号对应的处理函数。


    函数原型:

    • #include <signal.h>
    • ...
    • typedef void (*sighandler_t)(int);
    • ...
    • sighandler_t signal(int signum, sighandler_t handler);

    [color=rgb(51, 102, 153) !important]复制代码



    参数解析:

    参数
    含义
    signum1. 指定处理的信号值

    2. 下面列举了具体的信号值(宏)以及含义:
    含义
    SIGABRT中止信号:程序异常结束产生该信号
    SIGFPE浮点数异常信号:算术错误产生该信号,如除数为 0 或者运算导致溢出(不一定是与浮点数相关)
    SIGILL非法指令信号:无效的函数映像产生该信号,如非法指令
    SIGINT中断信号:交互信号,如用户按下 Ctrl + c 快捷键强制中断程序产生该信号
    SIGSEGV段错误信号:对存储的无效访问产生该信号,如访问不存在的内存单元
    SIGTERM终止信号:终止请求发送给程序时产生该信号
    handler1. 指定处理对应信号值的函数

    2. 可以通过设置 SIG_DEF 或 SIG_IGN 来表示采取默认响应方案或忽略信号

    3. 函数的原型必须是:void (*sighandler_t)(int)


    返回值:

    1. 返回值是一个函数指针类型(见函数原型)。

    2. 如果请求成功,函数返回一个指向先前处理函数的指针(如果有的话);

    3. 如果请求失败,函数返回 SIG_ERR,并设置 errno 为一个正数。


    演示:

    • #include <stdio.h>
    • #include <signal.h>
    • void signal_handler_fun(int signal_num)
    • {
    •         printf("捕获信号:%d\n", signal_num);
    • }
    • int main(void)
    • {
    •         signal(SIGINT, signal_handler_fun);
    •         while (1)
    •         {
    •                 ;
    •         }
    •         return 0;
    • }

    [color=rgb(51, 102, 153) !important]复制代码







    小甲鱼温馨提示:此时相当于我们拦截了 Ctrl + c 快捷键,如果需要退出程序,可以使用 Ctrl + \ 快捷键。


    备注:

    处理函数可以是下面三种情况之一:

    • 默认处理(SIG_DFL):对该信号采取默认的响应方案;
    • 忽略处理(SIG_IGN):忽略该信号,并继续执行后续代码;
    • 自定义处理函数:为该信号指定一个自定义的处理函数。

    小甲鱼温馨提示:如果你希望程序忽略中断信号(SIGINT),则调用 signal(SIGINT, SIG_IGN); 函数。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    110

    帖子

    229

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    229
    发表于 2023-12-26 06:17:13 | 显示全部楼层
    谢谢老大,分享学习看看是啥
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    74

    帖子

    148

    积分

    注册会员

    Rank: 2

    积分
    148
    发表于 2023-12-26 08:08:09 | 显示全部楼层
    学习一下
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    98

    帖子

    205

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    205
    发表于 2023-12-26 10:12:57 | 显示全部楼层
    感谢,楼主辛苦了
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    308

    帖子

    613

    积分

    高级会员

    Rank: 4

    积分
    613
    发表于 2023-12-27 02:58:49 | 显示全部楼层
    支持学习,感谢楼主啊
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    104

    帖子

    208

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    208
    发表于 2023-12-28 20:03:38 | 显示全部楼层
    学习学习,保存一下
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    84

    帖子

    178

    积分

    注册会员

    Rank: 2

    积分
    178
    发表于 2023-12-28 20:03:41 | 显示全部楼层
    感谢楼主无私分享
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    108

    帖子

    225

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    225
    发表于 2024-1-1 05:20:51 | 显示全部楼层
    支持一下。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    122

    帖子

    253

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    253
    发表于 2024-2-14 10:19:18 | 显示全部楼层
    可以看看,学习一下
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    65

    帖子

    133

    积分

    注册会员

    Rank: 2

    积分
    133
    发表于 2024-2-14 10:19:20 | 显示全部楼层
    终于找到了 谢谢
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表