信号检测是项目开发中必不可少的!提到信号处理机制,很多人都会想到signal函数吧
void handle_signal(int signal) {
printf("接收到信号: %d\n", signal);
if(SIGINT == signo)
{}
else if(SIGTERM == signo)
{}
// 退出程序
exit(signal);
}
int main() {
// 注册信号处理函数
signal(SIGINT, handle_signal); // 当接收到中断信号(SIGINT)时调用handle_signal函数
}
除了这种方式,还有一种操作信号集的方式更为精确,能够屏蔽,添加,删除,操作等某个信号。这些函数仅支持对 POSIX 信号集进行操作。首先了解下这几个函数:
int sigemptyset(sigset_t *set)
描述:
清空信号集set
参数:
set:用来存储信号集的值
返回值:
成功:0;失败:-1
int sigfillset(sigset_t *set)
描述:
将信号集set填满;就是把所有的信号都放在这个集合里;但是不会包含 NPTL 线程实现内部使用的两个实时信号:SIGCANCEL和SIGSETXID
参数:
set:用来存储信号集的值
返回值ÿ