信号分为两种
1、无参信号:signal - kill
2、带参信号:sigaction - sigqueue
sigaction
函数用于检查或修改与指定信号相关联的处理动作,它比 signal
函数更具可移植性和灵活性。
头文件:
#include <signal.h>
函数原型:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
函数参数:
signum
:要操作的信号编号。
act
:指向 struct sigaction
结构体的指针,用于指定新的信号处理动作。如果为 NULL
,则不改变信号的处理动作。struct sigaction内容如下
struct sigaction
{
void (*sa_handler)(int); // 信号处理函数
void (*sa_sigaction)(int, siginfo_t *, void *); // 用于支持实时信号
sigset_t sa_mask; // 在信号处理期间需要屏蔽的信号集
int sa_flags; // 信号处理选项
};
oldact
:指向 struct sigaction
结构体的指针,用于保存信号原来的处理动作。如果为 NULL
,则不保存原来的处理动作。
返回值:
成功:返回1
失败:返回0