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> ».