- #include <signal.h>
- void (*signal(int signo, void (*func)(int)))(int);
返回值:成功返回信号以前的处理配置,出错返回SIG_ERR
信号机制最简单的接口是signal函数。signo是信号名。func的值是常量SIG_IGN、常量SIG_DFL或当接到此信号后要调用的函数的地址。如果指定SIG_IGN,则向内核表示忽略此信号(SIGKILL和SIGSTOP不能忽略);如果指定SIG_DFL,则表示接到此信号后的动作是系统默认动作;当指定函数地址时,则在信号发生是,调用该函数。
从signal的这两个调用中也可以看到这种函数的限制:不改变信号的处理方式就不能确定信号的当前处理方式。
当一个进程调用fork时,其子进程继承父进程的信号处理方式。因为子进程在开始时复制父进程的存储映像,所以信号捕捉函数的地址在子进程中是有意义的。