捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >函数快查 > 正文
7 2018.02

signal -- 设置处理信号的函数

点击次数:1034 更新时间:2018-2-7 17:48:40  【打印此页

signal 函数文档



函数概要:

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


函数原型:

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



参数解析:
 

参数

含义

signum

1. 指定处理的信号值

2. 下面列举了具体的信号值(宏)以及含义:

含义

SIGABRT

中止信号:程序异常结束产生该信号

SIGFPE

浮点数异常信号:算术错误产生该信号,如除数为 0 或者运算导致溢出(不一定是与浮点数相关)

SIGILL

非法指令信号:无效的函数映像产生该信号,如非法指令

SIGINT

中断信号:交互信号,如用户按下 Ctrl + c 快捷键强制中断程序产生该信号

SIGSEGV

段错误信号:对存储的无效访问产生该信号,如访问不存在的内存单元

SIGTERM

终止信号:终止请求发送给程序时产生该信号

handler

1. 指定处理对应信号值的函数

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;
}


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


备注:

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

 

·         默认处理(SIG_DFL):对该信号采取默认的响应方案;

·         忽略处理(SIG_IGN):忽略该信号,并继续执行后续代码;

·         自定义处理函数:为该信号指定一个自定义的处理函数。


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

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1034 更新时间:2018-2-7 17:48:40  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修