版权所有 © 2014 tutorialspoint
#include <signal.h> int sigwaitinfo(const sigset_t *set, siginfo_t *info); int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout);
int sigwaitinfo(const sigset_t *set, siginfo_t *info);
int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout);
sigwaitinfo() 从调用进程的挂起信号列表中删除已传递的信号,并将其信号编号作为函数结果返回。如果info参数不是NULL,则它返回siginfo_t类型(参见sigaction(2))的结构,其中包含有关信号的信息。
通过sigwaitinfo() 返回的信号按通常顺序传递;有关更多详细信息,请参见signal(7)。
sigtimedwait() 的操作方式与sigwaitinfo() 完全相同,只是它还有一个附加参数timeout,它允许对进程挂起的时间设置上限。此参数的类型如下:
struct timespec { long tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }
如果此结构的两个字段都指定为 0,则执行轮询:sigtimedwait() 立即返回,或者返回有关已为调用者挂起的信号的信息,或者如果set中的任何信号均未挂起,则返回错误。
POSIX 未指定sigtimedwait() 的timeout参数的NULL值的含义,允许此含义与对sigwaitinfo() 的调用的含义相同,实际上这就是Linux上的操作方式。
kill (2)
sigaction (2)
signal (2)
sigpending (2)
sigprocmask (2)
sigqueue (2)
广告