Linux????????????
???????????? ???????[ 2015/1/22 13:57:33 ] ????????Linux ??????
???????
????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??
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11