信号与时间管理:深入解析与实践
1. 带负载发送信号
当进程触发跟踪陷阱(TRAP_TRACE)时,我们需要关注一些细节,比如si_code是一个值字段而非位字段。在信号处理中,使用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给出,value是一个整数和void指针的联合:
union sigval { int sival_