sigevent - Structure de notification des routines asynchrones
#include <signal.h>
union sigval { /* Data passed with notification */
int sival_int; /* Integer value */
void *sival_ptr; /* Pointer value */
};
struct sigevent {
int sigev_notify; /* Notification method */
int sigev_signo; /* Notification signal */
union sigval sigev_value;
/* Data passed with notification */
void (*sigev_notify_function)(union sigval);
/* Function used for thread
notification (SIGEV_THREAD) */
void *sigev_notify_attributes;
/* Attributes for notification thread
(SIGEV_THREAD) */
pid_t sigev_notify_thread_id;
/* ID of thread to signal
(SIGEV_THREAD_ID); Linux-specific */
};
La structure de
sigevent est utilisée par différentes API
pour décrire la façon dont un processus sera averti d'un
évènement (par exemple la fin d'une requête asynchrone,
l'expiration d'une temporisation ou l'arrivée d'un message).
La définition du SYNOPSIS est approximative : certains champs de
la structure
sigevent peuvent être définis comme faisant
partie d'une union. Les programmes ne devraient utiliser ces champs qu'en
fonction de la valeur indiquée dans
sigev_notify.
Le champ
sigev_notify indique comment les notifications seront
effectuées. Ce champ peut prendre une des valeurs suivantes :
- SIGEV_NONE
- Une notification
« vide » : ne fait rien quand
l'évènement se produit.
- SIGEV_SIGNAL
- Notifie le processus en envoyant le signal indiqué
en sigev_signo.
- Si le signal est intercepté avec un gestionnaire de
signal qui a été enregistré avec l'option
SA_SIGINFO de sigaction(2), les champs suivants sont
définis dans la structure siginfo_t qui est transmise en
tant que deuxième argument au gestionnaire :
- si_code
- La valeur de ce champ dépend de l'API qui transmet
la notification.
- si_signo
- Le numéro du signal est attribué à ce
champ (par exemple la même valeur que dans
sigev_signo).
- si_value
- La valeur indiquée dans sigev_value est
attribuée à ce champ.
- En fonction de l'API, d'autres champs peuvent être
définis dans la structure siginfo_t.
- Les mêmes renseignements sont aussi disponibles si
le signal permet d'utiliser sigwaitinfo(2).
- SIGEV_THREAD
- Notifie le processus par l'appel de
sigev_notify_function « comme s'il »
s'agissait de la fonction de démarrage d'un nouveau thread (il y a
plusieurs possibilités d'implémentation, dont la
création d'un nouveau thread pour chaque notification de minuterie,
ou la création d'un unique thread pour la réception de
toutes les notifications). La fonction est appelée avec
sigev_value comme unique paramètre. Si
sigev_notify_attributes n'est pas NULL, il doit pointer vers une
structure pthread_attr_t qui définie les paramètres
pour le nouveau thread (voir pthread_attr_init(3)).
-
SIGEV_THREAD_ID (spécifique à
Linux)
- Seulement utilisée par les temporisations POSIX pour
le moment, consultez timer_create(2).
timer_create(2),
aio_fsync(3),
aio_read(3),
aio_write(3),
getaddrinfo_a(3),
lio_listio(3),
mq_notify(3),
aio(7),
pthreads(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]>,
Cédric Boutillier <
[email protected]> et
Frédéric Hantrais <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]