19-等待信号集
10.5.3 等待信号集
下面是POSIX定义的允许进程临时改变信号掩码的第三个函数,该函数始终处于等待状态,直到产生一个终止该进程或被该进程处理的信号:
如果一个信号终止了进程,sigsuspend()不会返回。如果一个信号被发送和处理了,sigsuspend()在信号处理程序返回后,会返回-1,并将errno值设置为EINTR。如果set是一个无效指针,errno被设置成EFAULT。
sigsuspend()的一个常见的使用场景是获取已到达的、并在程序运行的临界区被阻塞的信号。首先,进程会使用sigprocmask()来阻塞一个信号集,将旧的信号掩码保存在oldset中。退出临界区后,进程会调用sigsuspend(),将oldset赋给set。