2011-05-23 45 views

回答

3

TLPI

UNIX系統提供的 兩種方式改變的信號的配置: signal()sigaction()。 sigaction()系統調用是 替代信號(),用於設置 信號的配置。雖然 sigaction()比signal()更復雜 ,但作爲回報, 提供了更大的靈活性。

sigaction也比signal更便攜。另外,通過sigaction,您可以指定接收附加參數的信號處理程序(sa_sigactionsa_handler)。

/* can be installed by signal/sigaction */ 
void(*) (int); 

/* can be installed by sigaction only */ 
void(*) (int, siginfo_t *, void *); 
0

從我的觀點來看,所不同的(除了接口:)和便攜性)是在行爲信號被捕獲後:

如果配置被設定爲一個函數,那麼第一任處置重置爲SIG_DFL,或信號被阻塞(請參閱下面的可移植性),然後使用參數signum調用處理程序。如果對處理程序的調用導致信號被阻塞,則從處理程序返回時信號將被解除阻塞。

而且,我也想重複相同手冊頁說:

信號()的行爲在UNIX版本的不同而不同,也跨越不同版本的Linux的歷史變化。避免使用它:改爲使用sigaction(2)。

相關問題