【发布时间】:2010-10-24 16:20:19
【问题描述】:
在 Linux 上使用 C 语言设置一个可以处理具有相同功能的多个 POSIX 信号的程序的最佳方法是什么?
例如,在我的代码中,我有一个处理函数,当捕获到信号以执行某些操作时,我想一般调用它:
/* Exit handler function called by sigaction */
void exitHandler( int sig, siginfo_t *siginfo, void *ignore )
{
printf("*** Got %d signal from %d\n", siginfo->si_signo, siginfo->si_pid);
loopCounter=0;
return;
}
我设置了两个信号,通过对每个信号进行单独的 sigaction 调用来捕获:
/* Set exit handler function for SIGUSR1 , SIGINT (ctrl+c) */
struct sigaction act;
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = exitHandler;
sigaction( SIGUSR1, &act, 0 );
sigaction( SIGINT, &act, 0 );
这是设置此类处理的正确方法吗?有没有其他方法可以让我不必枚举所有可能的信号编号?
【问题讨论】: