2009-12-03 21 views
7

Zauważyłem w definicji sigaction, callback sa_sigaction, ostatni argument jest void *.Czy możesz przekazać argument do 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); 
} 

Oznaczałoby to, że można przekazać argument użytkownika do instrukcji obsługi sa_sigaction.

Jednak nie byłem w stanie znaleźć tego przykładu.

Czy ktoś wie, czy można przekazać argument do funkcji wywołania zwrotnego sigaction? i Czy masz prosty przykład?

Odpowiedz

13

Niestety nie. Chociaż podpis jest pustką *, w rzeczywistości jest to ucontext_t. Od Single Unix Specification:

trzeci argument może być oddane do wskaźnika do obiektu typu ucontext_t do odnoszą się do procesu odbiorczego kontekście, który został przerwany, gdy sygnał został dostarczony

+0

A tutaj przykład: http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/063/6391/6391l3.html – codelogic

+0

Łącze do odpowiedniej strony w specyfikacji SUSv3 online: http: //www.opengroup .org/onlinepubs/009695399/functions/sigaction.html – ephemient

+0

to niefortunne :( – simon

Powiązane problemy