Linux信号与时间管理知识详解
1. 信号处理与带负载信号发送
在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指定,value是一个整数和void指针的联合:
union sigval { int sival_int; void *sival_ptr; };<