2016-12-14 145 views
1

看來,無論我如何填寫struct sigaction來設置對sigaction函數的調用,.sa_flags成員都會與 0x4000000進行或運算,或者至少這是我如何得到它,如果我稍後再檢索與sigaction(Signum, NULL, &sa)的配置文件。Linux上的0x4000000 sigaction標誌是什麼?

爲sigaction的聯機幫助頁列出了以下ORable值.sa_flags

SA_NOCLDSTOP 
SA_NOCLDWAIT 
SA_NODEFER 
SA_ONSTACK 
SA_RESETHAND 
SA_RESTART 
SA_SIGINFO 

0x4000000與運算爲0與每個上述的。什麼是0x4000000

+0

你確定你沒有錯過'0'嗎? 'SA_NODEFER'是0x4000000' – Barmar

+2

在'/usr/include/x86_64-linux-gnu/asm/signal.h'/' /usr/include/asm-generic/signal.h:'我看到:'#define SA_RESTORER 0x04000000 ' – alk

+0

可能就是這樣。這是一個過時的標誌,所以其他包含文件已將其註釋掉。 – Barmar

回答

4

參考my comment,從this man-page我們學習:

SA_RESTORER

不適合的應用中使用。 C 庫使用此標誌來指示sa_restorer字段包含 「信號蹦牀」的地址。有關更多詳細信息,請參閱sigreturn(2)