#1 Le 27/11/2015, à 11: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, à 11: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
Donut
Hors ligne