2009-12-03 86 views
7

我注意到在sigaction的定義中,sa_sigaction回調,最後一個參數是void *。你可以將一個參數傳遞給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); 
} 

這將表明您可以將用戶參數傳遞給sa_sigaction處理程序。

但是,我一直無法找到一個這樣的例子。

有誰知道你是否可以將參數傳遞給sigaction回調函數? 和你有一個簡單的例子嗎?

回答

13

不幸的不是。雖然簽名是void *,但它實際上是一個ucontext_t。從單一UNIX規範:

第三個參數可以轉換爲一個指針類型ucontext_t的一個目的是指接收處理上下文當信號被交付

+0

而這裏的被中斷一個例子:http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/063/6391/6391l3.html – codelogic

+0

在線SUSv3規範中的相關頁面的鏈接:http://www.opengroup .org/onlinepubs/009695399/functions/sigaction.html – ephemient

+0

這是不幸的:( – simon

相關問題