所有信号的信号处理程序

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)

R..*_*R.. 5

大多数系统都有一个宏NSIG_NSIG(前者在标准一致性模式中不可用,因为它违反命名空间)定义signal.h为循环for (i=1; i<_NSIG; i++)将遍历所有信号.此外,在具有信号掩码的POSIX系统上,是信号CHAR_BIT*sizeof(sigset_t)数量的上限,如果既NSIG没有_NSIG定义,也可以用作回退.