kob*_*ber 5 c unix linux signal-handling
如何使用signal(3)为正在运行的操作系统上可用的ALL信号注册信号处理程序?
我的代码看起来像这样:
void sig_handler(int signum)
{
printf("Received signal %d\n", signum);
}
int main()
{
signal(ALL_SIGNALS_??, sig_handler);
while (1) {
sleep(1);
};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
大多数系统都有一个宏NSIG或_NSIG(前者在标准一致性模式中不可用,因为它违反命名空间)定义signal.h为循环for (i=1; i<_NSIG; i++)将遍历所有信号.此外,在具有信号掩码的POSIX系统上,是信号CHAR_BIT*sizeof(sigset_t)数量的上限,如果既NSIG没有_NSIG定义,也可以用作回退.