Loading

NOM

       epoll_wait,  epoll_pwait  -  Attendre  un  événement sur un descripteur
       epoll

SYNOPSIS

       #include <sys/epoll.h>

       int epoll_wait(int epfd, struct epoll_event *events,
                      int maxevents, int timeout);
       int epoll_pwait(int epfd, struct epoll_event *events,
                      int maxevents, int timeout,
                      const sigset_t *sigmask);

       L’appel système epoll_wait() attend un événement sur  l’instance  epoll
       indiquée  par  le  descripteur epfd. La zone mémoire pointée par events
       contiendra les événements disponibles pour l’appelant.  Un  maximum  de
       maxevents  événements  sont  renvoyés  par  epoll_wait().  Le paramètre
       maxevents doit être supérieur à zéro.

       L’appel  système  attend  pendant  une  durée   maximale   de   timeout
       millisecondes.  En  spécifiant -1 comme valeur de timeout, epoll_wait()
       attendra  indéfiniment,  alors   qu’un   timeout   nul   fera   revenir
       epoll_wait()  immédiatement,  même  si aucun événement n’est disponible
       (avec un code de retour nul).

       La structure epoll_event est définie ainsi :

           typedef union epoll_data {
               void    *ptr;
               int      fd;
               uint32_t u32;
               uint64_t u64;
           } epoll_data_t;

           struct epoll_event {
               uint32_t     events;    /* Événements epoll */
               epoll_data_t data;      /* Variable utilisateur */
           };

       Le champ data de la structure renvoyée contiendra les mêmes données que
       lors  de l’appel epoll_ctl(2) (EPOLL_CTL_ADD, EPOLL_CTL_MOD) tandis que
       le champ events contiendra le masque de bit des événements disponibles.

   epoll_pwait()
       La  relation  entre epoll_wait() et epoll_pwait() est similaire à celle
       entre select(2) et pselect(2) : de même que  pselect(2),  epoll_pwait()
       permet  à une application d’attendre de façon sûre qu’un descripteur de
       fichiers soit prêt ou qu’un signal arrive.

       L’appel à epoll_pwait() suivant :

           ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);

       est équivalent à exécuter de façon atomique les appels suivants :

           sigset_t origmask;

           sigprocmask(SIG_SETMASK, &sigmask, &origmask);
           ready = epoll_wait(epfd, &events, maxevents, timeout);
           sigprocmask(SIG_SETMASK, &origmask, NULL);

       Le paramètre sigmask peut valoir NULL, auquel  cas,  epoll_pwait()  est
       équivalent à epoll_wait().

VALEUR RENVOYÉE

       Lorsqu’il   réussit,   l’appel   epoll_wait()   renvoie  le  nombre  de
       descripteurs prêts pour les E/S demandées, ou zéro si aucun descripteur
       n’est devenu prêt pendant la durée timeout millisecondes. Si une erreur
       se  produit,  epoll_wait()  renvoie  -1  et  errno  contient  le   code
       approprié.

ERREURS

       EBADF  epfd n’est pas un descripteur de fichier valable.

       EFAULT La  zone  mémoire  pointée  par  events  n’est pas accessible en
              écriture.

       EINTR  L’appel a été  interrompu  par  un  signal  avant  qu’aucun  des
              événements  demandés  n’ait lieu ou que la temporisation timeout
              n’expire ; voir signal(7).

       EINVAL Le descripteur epfd fourni n’est pas un descripteur epoll, ou le
              paramètre maxevents est inférieur ou égal à zéro.

VERSIONS

       epoll_pwait() a été ajouté au noyau Linux dans sa version 2.6.19.

       Le support pour epoll_pwait() est fourni à partir de la glibc 2.6.

CONFORMITÉ

       epoll_wait()  est  spécifique à Linux, et a été introduit dans le noyau
       2.5.44.

VOIR AUSSI

       epoll_create(2), epoll_ctl(2), epoll(7)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».