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);
這是設置此類型處理的正確方法嗎?有沒有其他方法可以讓我不必列舉所有可能的信號編號?
謝謝,這是一個好主意。我想我可以繼續列舉我想要捕捉的信號,因爲我對C很陌生,如果我錯過了某些東西,我很好奇。 – ammianus 2010-10-25 19:58:24