EPOLL_CREATE(2)

NOM
epoll_create, epoll_create1 - Ouvrir un descripteur de fichier epoll

SYNOPSIS
#include <sys/epoll.h>

int epoll_create(int size);
int epoll_create1(int flags);

DESCRIPTION
epoll_create() crée une nouvelle instance epoll(7). Depuis Linux 2.6.8, le paramètre size est ignoré, mais doit être strictement positif. Consultez NOTES.

epoll_create() renvoie un descripteur de fichier référençant la nouvelle instance epoll. Ce descripteur de fichier est utilisé pour tous les appels à l'interface epoll. Lorsqu'il n'est plus nécessaire, le descripteur de fichier renvoyé par epoll_create() devrait être fermé avec close(2). Lorsque tous les descripteurs de fichier faisant référence à une instance epoll sont fermés, le noyau détruit l'instance et libère les ressources associées pour une nouvelle utilisation.

  epoll_create1()
Si flags vaut 0, alors, en plus du fait que le paramètre obsolète size n'est plus précisé, epoll_create1() est identique à epoll_create(). La valeur suivante peut être incluse dans flags pour obtenir un comportement différent :

EPOLL_CLOEXEC
    Placer l'attribut « close-on-exec » (FD_CLOEXEC) sur le nouveau descripteur de fichier. Consultez la description de l'attribut O_CLOEXEC dans open(2) pour savoir pourquoi cela peut être utile.

VALEUR RENVOYÉE
S'il réussissent, ces appels système renvoient un descripteur de fichier (un entier non négatif). En cas d'erreur, ils renvoient -1 et positionnent errno pour indiquer l'erreur.

ERREURS

EINVAL
    size est négatif ou nul.

EINVAL
    (epoll_create1()) flags contient une valeur incorrecte.

EMFILE
    La limite par utilisateur du nombre d'instances epoll imposée par /proc/sys/fs/epoll/max_user_instances a été atteinte. Consultez epoll(7) pour plus de détails.

EMFILE
    La limite du nombre de descripteurs de fichiers par processus a été atteinte.

ENFILE
    La limite du nombre total de fichiers ouverts pour le système entier a été atteinte.

ENOMEM
    Il n'y a pas assez de mémoire pour que le noyau crée les objets nécessaires.

VERSIONS
epoll_create a été introduite dans le noyau Linux 2.6. La prise en charge par la glibc a été ajoutée dans la version 2.3.2.

epoll_create1 a été introduite dans le noyau Linux 2.6.27. La prise en charge par la glibc a été ajoutée dans la version 2.9.

CONFORMITÉ
epoll_create() and epoll_create1() are Linux-specific.

NOTES
Dans l'implémentation initiale d'epoll_create(), le paramètre size informait le noyau du nombre de descripteurs de fichier que l'appelant s'attend à ajouter à l'instance epoll. Le noyau utilisait ce renseignement comme indice pour la quantité d'espace à allouer initialement dans les structures de données internes décrivant les événements (si nécessaire, le noyau allouerait plus d'espace si l'utilisation de l'appelant dépasse l'indice donné en size). Maintenant, cet indice n'est plus nécessaire (le noyau dimensionne dynamiquement les structures de données sans avoir besoin de cet indice), mais size doit toujours être strictement positif, par compatibilité ascendante, si de nouvelles applications epoll sont exécutées sur d'anciens noyaux.

VOIR AUSSI
close(2), epoll_ctl(2), epoll_wait(2), epoll(7)

COLOPHON
Cette page fait partie de la publication 5.13 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org> Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 à debian-l10n-french@lists.debian.org.