Linux 信号与时间管理全解析
1. 信号处理
1.1 带负载发送信号
在信号处理中,使用 SA_SIGINFO
标志注册的信号处理程序会接收一个 siginfo_t
参数,该结构包含 si_value
字段,可用于传递从信号发生器到信号接收器的可选负载。
POSIX 定义的 sigqueue()
函数允许进程发送带有负载的信号,其原型如下:
#include <signal.h>
int sigqueue (pid_t pid,
int signo,
const union sigval value);
sigqueue()
与 kill()
类似,成功时,由 signo
标识的信号会被排队到由 pid
标识的进程或进程组,函数返回 0。信号的负载由 value
给出,它是一个整数和空指针的联合:
union sigval {
int sival_int;
void *sival_ptr;
};
调用失败时,函数返回 -1,并将 errno
设置为以下错误之一: