???????
????Linux?????????е????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????к??????????????????????????????????????????????????????????????????????????????????????漰????????л??????£?

???????????sigwait()??????“???”?????????signal()/sigaction()???????????????“????”?????????????????????????
?????  ????
????1.1 ?????????
????????????????????????????????????????????????????????(???0)?????????(????????)?????????????????????kill()/raise()????????????????????
?????????????????????????????????????????????????????????????????????????(generation)?????(delivery)???(????????)??????????????????δ??(pending)????????????δ??????????????(suspending)??????
????????????????(block)????????????????????????????????????????????y?????????????δ??????????y???(a)??????????????????(b)???????????????????????????????????????δ??(δ?????)?????У????????????????????????????δ??????????????????????????????????δ???????????????????????????δ?????????????????????????????????????????????????????????????????????????????????????????????????sigpending()?????ж???Щ??????????????????δ??????
??????????????????????????????????????Σ???δ?????н?????????????????е??????????????(?????)??????????Σ?????????????
??????????????????????????(signal mask)???漲??????????????y???????????????????????????????????ж????λ?????????????????????????λ???????????????????????
??????ó??????????????????????????(signal handler)?????????????????????????????????????????????????????????????е???????????????????????????????????????????????(async-signal-safe)????????????Щ????(??read)???????ж??????????????ж?????????????????????????????????????????
????1.2 ????????
??????????????????δ???????С???????sigpending()???????????????δ????????????????δ???????е?????????????????????????????н???(?????)????????????????????δ???????????(??????????????????)???????????????????е?(???嵱?????????????????)??????????????????Щ????????????ó?????????Щ????????Щ????
???????????????????????????????????ζ????????????????Щ????????????????????????????????????????????????????????????????????????????????????????????????????????????????μ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????(??SIGBUS/SIGFPE/SIGILL/SIGSEGV)?????????????????????????????????????????????????????????????????????????(?????????????????????????)??????????????θ????????????????д?????????????
????Linux??C????????????????????LinuxThreads(????)??NPTL(Native POSIX Threads Library)??NPTL????????Linux 2.6????????(???????)????POSIX.1 threads(Pthreads)?淶????????????????????man 7 pthreads???????
????NPTL???????????????????????????????????????????????ó???????kill(getpid()?? signo)????????????????????LinuxThreads??????????????????????????????????????getpid()??????????????????ó?????????????kill()????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????“??????”?????????????????????????????????ж????????????????????????????????????е?????????
???????????????????????????????????????в?????pthread????????
??????  ???
????2.1 pthread_sigmask
???????????pthread_sigmask()????????????????????????θ??????Щ????????????
????#include <signal.h>
????int pthread_sigmask(int how?? const sigset_t *restrict set?? sigset_t *restrict oset);
?????ú???????(??)????????????????????????oset????????????????????????????????????????set????????????how??????????????????????????????????????????????how????ú?????г???????0?????????????(errno)??
?????±????????how????????????У?SIG_ BLOCK?“??”????????SIG_SETMASK??????????

????????????pthread_sigmask()????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????ж????????У???????????????????????(??SIGSEGV)??????????????????????(SIGKILL ??SIGSTOP )???????????
???????pthread_sigmask()??sigprocmask()???????????????????????????pthread_sigmask()????????????????????????????????errno????sigprocmask()???????????????????????????????ж??壬??????????errno??????-1??