Linux 信号与时间管理全解析
信号处理
在 Linux 系统中,信号是一种重要的内核与用户空间通信的机制。当进程遇到跟踪陷阱时,会触发特定的信号。在信号处理方面,有一个重要的概念是带有效载荷发送信号。
当使用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给出,它是一个整数和void指针的联合:
union sigval { int sival_int; void *sival