Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/11/2015, à 12:51

DonutMan75

[C] Passer des arguments à sa_handler (fonction sig_action)

Bonjour, je cherche à passer des arguments personnalisés à une fonction levée en cas de signaux reçus par mon processus.

Dans le man de signal.h j'ai le prototype suivant pour la fonction sigaction (qui me permet de relier un signal à un pointeur de fonction) :

int    sigaction(int, const struct sigaction *restrict,
                         struct sigaction *restrict);

La structure sigaction est quant-à-elle définie par :

The header shall provide a declaration of struct sigaction, including at least the following members:


              void (*sa_handler)(int)  Pointer to a signal-catching function or one of the macros
                                       SIG_IGN or SIG_DFL.
              sigset_t sa_mask         Set of signals to be blocked during execution of the signal
                                       handling function.
              int      sa_flags        Special flags.
              void (*sa_sigaction)(int, siginfo_t *, void *)
                                       Pointer to a signal-catching function.

void (*sa_handler)(int) signifie ici que la fonction pointée en cas de signal reçu attend comme argument un entier (le code du signal) et renvoie du void.
A priori, il n'est donc pas possible de rajouter des arguments supplémentaires personnalisés ?

Savez-vous si cela est possible et comment procéder ?

Merci d'avance,

Donut.

Hors ligne

#2 Le 27/11/2015, à 12:59

DonutMan75

Re : [C] Passer des arguments à sa_handler (fonction sig_action)

Pour le moment, la seule solution que j'aie trouvée c'était de définir une variable visible à la fois par main et par la fonction appelée en cas de trappe. Ce n'est peut-être pas la meilleure solution, mais je n'en vois pas d'autres...
Merci d'avance pour vos retours smile

Donut

Hors ligne