2009-12-03 19 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です。

3番目の引数は、信号が

+0

を配信そして、ここだ時に中断された受信プロセスのコンテキストを参照するために型ucontext_tのオブジェクトへのポインタにキャストすることができます:シングルUNIX仕様から例: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

関連する問題