linux学习第26天(信号集)
信号集操作函数
信号集就是一个整数,这整数32位你自己设置,设置好了和系统的mask进行位操作
sigset_t set:自定义信号集
sigemptyset(sigset_t *set):清空信号集
sigfillset(sigset_t *set):全部置1
sigaddset(sigset_t *set,int signum):将一个信号添加到集合中
sigdelset(sigset_t *set,int signum):将一个信息集合中移除
sigismember(const sigset_t *set,int signum):判断一个信号是否在集合中。在--》1,不在--》0
设置信号屏蔽字和解除屏蔽
int sigprocmask(int how, const sigset_t set,sigset_t *oldset)
how:
SIG_BLOCK:设置阻塞
SIG_UNBLOCK:取消阻塞
SIG_SETMASK:自定义set替换mask
set:自定义set
oldset:旧有的mask
查看未决信号集
int sigpending(sigset_t *set)
set:传出未决信号集
例子
先阻塞^C和^\,然后执行kill命令
可以看到还是能被KILL杀死,说明,阻塞对9号kill无用(19号也是如此),但是对其他还是有效,比如^C和^\无效了
signal实现信号捕捉
输入^C
sigaction实现信号捕捉
在这时候,只能使用kill命令才能中断