#include <thread.h> #include <signal.h> int thr_sigsetmask(int how, const sigset_t *set, sigset_t *oset);
thr_sigsetmask() 可用来更改或检查调用线程的信号掩码。每个线程都有自已的信号掩码。新线程会继承调用线程的信号掩码和优先级,但不会继承暂挂的信号。新线程的暂挂信号将为空。
如果参数 set 的值不为 NULL,则 set 会指向一组信号,这组信号可用来修改当前阻塞的信号组。如果 set 的值为 NULL,则 how 的值没有意义,并且不会修改线程的信号掩码。使用此行为可了解有关当前阻塞的信号的情况。
how 的值可指定更改信号组的方法。how 可以为以下值之一。
SIG_BLOCK。set 对应于一组要阻塞的信号。这些信号会添加到当前的信号掩码中。
SIG_UNBLOCK。set 对应于一组要解除阻塞的信号。这些信号会从当前的信号掩码中删除。
SIG_SETMASK。set 对应于新的信号掩码。当前的信号掩码将替换为 set。