编程接口指南

处理信号

发送者可以使用 sigqueue(3RT) 将信号连同少量信息一起发送到目标进程。

要对随后出现的暂挂信号进行排队,目标进程必须针对指定信号设置 SA_SIGINFO 位。请参见 sigaction(2) 手册页。

目标进程通常以异步方式接收信号。要同步接收信号,请阻塞信号并调用 sigwaitinfo(3RT)sigtimedwait(3RT)。请参见 sigprocmask(2) 手册页。此过程会导致同步接收信号。sigqueue(3RT) 的调用方发送的值将存储在 siginfo_t 参数的 si_value 部分中。如果不阻塞信号,则会导致将信号传送到 sigaction(2) 指定的信号处理程序,并且将值显示在此处理程序的 siginfo_t 参数的 si_value 中。

指定数量的信号和关联值可以通过进程发送并保持未传送状态。首次调用 sigqueue(3RT) 时,会为 {SIGQUEUE_MAX} 信号分配存储空间。此后,调用 sigqueue(3RT) 可在目标进程中成功加入队列或是在有限时间内失败。