在阅读ltp/testcases/kernel/io/disktest/signals.c代码时,setup_sig_mask()调用了pthread_sigmask()函数,好久没有写代码了,关于这部分代码竟没看明白,故查阅linux自带的manual手册(#man pthread_sigmask)以下代码就是man手册中给出的例子,为了理解信号的处理机制,稍作修改,废话不多说了,请看运行case。
编译:gcc pthread_sigmask.c -lpthread
运行结果
$ ./a.out &
[3] 3782$ kill -USR1 3782
$ kill -USR1 3782
[sig_thread] Signal handling thread got signal 10
$ kill -QUIT 3782
[main] Signal handling thread got signal 3
$ kill -USR1 3782
[sig_thread] Signal handling thread got signal 10
$ kill -QUIT 3782
[sig_thread] Signal handling thread got signal 3
$ kill -TERM 3782
[3]+ Terminated ./a.out