2009-12-03 12 views
7

Me di cuenta en la definición de la acción de seguimiento de sigaction, sa_sigaction, que el último argumento es un vacío *.¿Puedes pasar un argumento a 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); 
} 

Esto indicaría que puede pasar un argumento de usuario al controlador sa_sigaction.

Sin embargo, no he podido encontrar un ejemplo de esto.

¿Alguien sabe si puede pasar un argumento a la función de devolución de llamada sigaction? y ¿Tiene un ejemplo simple?

Respuesta

13

Desafortunadamente no. Si bien la firma es un vacío *, en realidad es un ucontext_t. De Single UNIX Specification:

el tercer argumento se puede convertir a un puntero a un objeto de tipo ucontext_t para referirse al proceso de recepción contexto que fue interrumpido cuando la señal fue entregado

+0

Y es aquí un ejemplo: http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/063/6391/6391l3.html – codelogic

+0

Un enlace a la página relevante en la especificación SUSv3 en línea: http: //www.opengroup .org/onlinepubs/009695399/functions/sigaction.html – ephemient

+0

que es desafortunado :( – simon

Cuestiones relacionadas