Loading

NOM

       epoll_ctl - Interface de contrôle pour un descripteur epoll

SYNOPSIS

       #include <sys/epoll.h>

       int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

       Cet  appel  système  effectue des opérations de contrôle sur l’instance
       epoll référencée par le descripteur de fichier epfd. Il  nécessite  que
       l’opération op soit effectuée sur le descripteur de fichier cible fd.

       Les valeurs autorisées pour le paramètre op sont :

       EPOLL_CTL_ADD
              Enregistre  le  descripteur  de fichier cible fd pour l’instance
              epoll indiquée par le descripteur de  fichier  epfd  et  associe
              l’événement event avec le fichier représenté par fd.

       EPOLL_CTL_MOD
              Change l’événement event associé au descripteur de fichier fd.

       EPOLL_CTL_DEL
              Supprime   (désenregistre)  le  descripteur  de  fichier  fd  de
              l’instance epoll indiquée  par  epfd.  Le  paramètre  event  est
              ignoré   et   peut  être  NULL  (mais  voir  la  section  BOGUES
              ci‐dessous).

       Le paramètre event décrit l’objet lié au descripteur de fichier fd.  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  membre events est un masque de bits composé à partir des événements
       disponibles suivants :

       EPOLLIN
              Le descripteur associé est disponible pour un appel read(2).

       EPOLLOUT
              Le descripteur associé est disponible pour un appel write(2).

       EPOLLRDHUP (depuis Linux 2.6.17)
              Le correspondant  sur  une  socket  en  mode  flux  a  fermé  la
              connexion, ou bien a terminé la partie écriture de la connexion.
              (Cet attribut est particulièrement utile  pour  écrire  du  code
              simple  permettant  de détecter la fermeture de la connexion par
              le correspondant en détection de changement d’état.)

       EPOLLPRI
              Il y a des données urgentes disponibles pour un appel read(2).

       EPOLLERR
              Une erreur s’est produite sur le descripteur de fichier associé.
              epoll_wait(2)  attend  toujours  cet  événement,  il  n’est  pas
              nécessaire de l’indiquer dans events.

       EPOLLHUP
              Une déconnexion  s’est  produite  sur  le  descripteur  associé.
              epoll_wait(2)  attend  toujours  cet  événement,  il  n’est  pas
              nécessaire de l’indiquer dans events.

       EPOLLET
              Fixer le comportement en détection de changement d’état  sur  le
              descripteur. Par défaut epoll fonctionne en détection de niveau.
              Voir epoll(7) pour plus de  détails  sur  les  comportements  en
              détection de niveau et de changements d’état.

       EPOLLONESHOT (depuis Linux 2.6.2)
              Fixer  le  comportement « coup unique » (Ndt : one‐shot) pour le
              descripteur de fichier associé.  Cela  signifie  qu’après  qu’un
              événement  ait  été retiré avec epoll_wait(2), le descripteur de
              fichier  est  désactivé  de  manière  interne  et  aucun   autre
              événement  ne sera rapporté par l’interface epoll. L’utilisateur
              doit appeler epoll_ctl()  avec  EPOLL_CTL_MOD  pour  réarmer  le
              descripteur de fichier avec le nouveau masque d’événement.

VALEUR RENVOYÉE

       Lorsqu’il  réussit,  l’appel epoll_ctl() renvoie zéro. Si une erreur se
       produit, epoll_ctl() renvoie -1 et errno contient le code approprié.

ERREURS

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

       EEXIST op est EPOLL_CTL_ADD, mais le descripteur de fichier fd est déjà
              enregistrée dans cette instance epoll.

       EINVAL Le  descripteur de fichier epfd, n’est pas un descripteur epoll,
              ou fd et epfd sont identiques, ou l’opération demandée op  n’est
              pas supportée par cette interface.

       ENOENT op   est   EPOLL_CTL_MOD  ou  EPOLL_CTL_DEL,  et  fd  n’est  pas
              enregistré dans cette instance epoll.

       ENOMEM Pas assez de mémoire dans le noyau pour traiter  l’opération  op
              demandée.

       ENOSPC La  limite imposée par /proc/sys/fs/epoll/max_user_watches a été
              rencontrée en essayant d’enregistrer (EPOLL_CTL_ADD) un  nouveau
              descripteur   de  fichier  sur  une  instance  epoll.  Consultez
              epoll(7) pour plus de détails.

       EPERM  Le fichier cible fd n’est pas supporté par epoll.

CONFORMITÉ

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

NOTES

       L’interface  epoll  supporte tous les descripteurs de fichier supportés
       par poll(2).

BOGUES

       Dans  les  versions  du  noyau   antérieures   à   2.6.9,   l’opération
       EPOLL_CTL_DEL nécessitait un pointeur non NULL dans event, alors que ce
       paramètre est ignoré. Depuis Linux 2.6.9, event  peut  être  NULL  lors
       d’une  opération  EPOLL_CTL_DEL.  Les  applications  qui  doivent  être
       portables pour les noyaux antérieurs  à  2.6.9  devraient  utiliser  un
       pointeur différent de NULL dans event.

VOIR AUSSI

       epoll_create(2), epoll_wait(2), poll(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> ».