一、利用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信号后