1、信号集:参照https://www.jianshu.com/p/021336717366
当某个信号来时,信号处理函数正在执行,进程会屏蔽同一种信号。进程必须能够记住当前阻塞了哪些信号。
信号集能够把60多种信号的来和没来都表示到。00000000,00000000........
sigset_t结构体。
2、信号相关函数
sigemptyset(set) 信号集清0 用的多
sigfillset(set) 信号集置1 用的少
//将信号集set中的signum信号对应位置1
int sigaddset(sigset_t* set, int signum); 此时还没有加入进程的信号集需调sigprocmask
//将信号集set中的signum信号对应位清0
int sigdelset(sigset_t* set, int signum);
//成功返回0,失败返回-1
3、sigprocmask等信号函数范例演示
收到信号后并执行完信号处理函数后,sleep返回剩余睡眠秒数。
所以,sleep函数能够被信号打断。
上传代码图:
在信号处理函数中设置信号变为缺省处理,
signal(SIGQUIT, SIG_DFL) 变成系统缺省动作。
当进程再次接收到该信号的时候,系统缺省处理该信号。
网友评论