信号(七)信号捕捉

这篇博客探讨了如何在Unix/Linux系统中捕获信号。首先介绍了使用signal函数进行简单信号处理,强调了使用宏定义确保跨平台兼容性的重要性。接着,详细解释了sigaction函数,它允许更精细地控制信号的处理方式,并且可以保存信号的原始处理函数。
摘要由CSDN通过智能技术生成

一、利用signal函数来简单捕捉信号

#include <signal.h>

typedef void (*sighandler_t)(int); //定义一个函数指针类型,其中函数的返回值为void,函数参数为int;其实一个函数的函数名就是函数指针

sighandler_t signal(int signum, sighandler_t handler);

//函数返回值:signal()  returns  the previous value of the signal handler, or SIG_ERR on error. 
             In the event of an error,  errno  is  set  to  indicate  the cause.

    signal函数有两个参数,其中signum是要捕捉的信号的编号,同样的,这里最好传信号编号对应的宏名,这是因为这样跨平台的代码不用修改也能运行。第二参数是函数指针,是当捕捉到该信号时要执行的逻辑。


用signal函数实现简单信号捕获示例:

#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<stdlib.h>

typedef void (*sighandler_t)(int);

void handler(int signo){  //这里是一个回调函数,系统收到了SIGINT信号后࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值