可以用函数 signal 注册一个信号处理函数,原型为:
#include <signal.h>
typedef void(*sighandler_t)(int); //函数指针 void (*)(int a)
sighandler_t signal(int signum, sighandler_t handler);
signal 的第 1 个参数 signum 表示要捕捉处理的信号,第 2 个参数是个函数指针,表示对该信号进行捕捉处理的函数,该参数也可以是 SIG_DFL(表示交由系统默认处理,相当于白注册了)或 SIG_IGN(表示忽略掉该信号而不做任何处理)。signal 如果调用成功,返回该信号处理函数的地址,否则返回 SIG_ERR。
sighandler_t 类型的形参(函数指针)指向一个信号处理函数,由 signal 函数注册,注册以后,在整个进程运行过程中均有效,并且对不同的信号可以注册同一个信号处理函数。该函数只有一个整型参数,表示信号值。