我要送兩個信號的過程,SIGUSR1
和SIGUSR2
,以修改特定布爾變量在程序(SIGUSR1
它設置爲真正,SIGUSR2
套它假) 。所以我寫了一個signalHandler()
函數來控制SIGUSR1
或SIGUSR2
的行爲。問題是:如何設置sigaction()
來處理這個特定的任務?我在Google上花了很多時間,我到處都看到我應該使用sigaction()
而不是陳舊的signal()
。在手冊頁,我發現這個使用的sigaction()的
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
在正負號我已經把我想要處理信號的類型,那麼我有一個struct sigaction的參數:
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
在第一場我還以爲我應該設置我的信號處理程序的名稱,但我不知道如何設置其他字段。
最後,有什麼用:struct sigaction *oldact
?
'oldact'存儲信號編號'signum'的先前信號處理狀態。 – moshbear 2011-12-20 10:18:08
@moshbear如果我不想使用它,我可以將它設置爲NULL嗎? – Sicioldr 2011-12-20 10:19:30
__是的,你可以。 (請原諒下劃線,但評論的長度限制爲15字符)。 – moshbear 2011-12-20 11:07:28