一 点睛
sigaction:查询或设置信号处理方式
头文件
#include<signal.h>
定义函数
int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);
函数说明
sigaction()会依参数signum指定的信号编号来设置该信号的处理函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。
结构sigaction定义如下
struct sigaction
{
void (*sa_handler) (int);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer) (void);
}
sa_handler:是一个函数指针,指向一个信号处理函数。
sa_mask:用来指定信号处理函数执行期间需要被屏蔽的信号,特别是当某个信号被处理时,它自身会自动放入进程的信号掩码,因此在信号处理函数执行期间,这个信号不会再度发生。
sa_restorer:此参数没有使用。
sa_flags:用来设置信号处理的其他相关操作,下列的数值可用。OR 运算(|)组合。
SA_NOCLDSTOP : 使父进程在它的子进程暂停或继续运行时不会收到SIGCHLD信号。
SA_RESTART:被信号中断的系统调用会自行重启
SA_NODEFER:在运行信号的处理函数时再次收到当前的信号,也会触发新处理函数调用。
返回值
执行成功则返回0,如果有错误则返回-1。