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);
DESCRIPTION¶
Cet appel système effectue des opérations de contrôle sur
l'instance
epoll(7) 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 consultez 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
- Définir le comportement en détection de changement
d'état sur le descripteur. Par défaut epoll
fonctionne en détection de niveau. Consultez 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)
- Définir le comportement « coup unique »
(Ndt : one‐shot) pour le descripteur de fichier
associé. Cela signifie qu'après qu'un
événement a é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.
VERSIONS¶
epoll_ctl() a été ajouté au noyau Linux dans sa
version 2.6.
epoll_ctl() est spécifique à Linux. La prise en charge par
la glibc a été ajoutée dans la version 2.3.2.
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.65 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
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> ».