.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2003 Davide Libenzi .\" Davide Libenzi .\" and Copyright 2007, 2012, 2014, 2018 Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_SW_3_PARA) .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" 2007-04-30: mtk, Added description of epoll_pwait() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH EPOLL_WAIT 2 "11 avril 2020" Linux "Manuel du programmeur Linux" .SH NOM epoll_wait, epoll_pwait \- Attendre un événement d’E/S sur un descripteur epoll .SH SYNOPSIS .nf \fB#include \fP .PP \fBint epoll_wait(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP \fB int \fP\fImaxevents\fP\fB, int \fP\fItimeout\fP\fB);\fP \fBint epoll_pwait(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP \fB int \fP\fImaxevents\fP\fB, int \fP\fItimeout\fP\fB,\fP \fB const sigset_t *\fP\fIsigmask\fP\fB);\fP .fi .SH DESCRIPTION L'appel système \fBepoll_wait\fP() attend la réception d'un événement sur l'instance \fBepoll\fP(7) à laquelle se rapporte le descripteur de fichier \fIepfd\fP. La zone mémoire pointée par \fIevents\fP est utilisée pour renvoyer des informations issues de la liste préparée pour les descripteurs de fichier de la liste d'intérêts ayant des événements disponibles. Un maximum de \fImaxevents\fP événements sont renvoyés par \fBepoll_wait\fP(). Le paramètre \fImaxevents\fP doit être supérieur à zéro. .PP L'argument \fItimeout\fP définit le temps en milliseconde pendant lequel \fBepoll_wait\fP() bloquera. Le temps est mesuré avec l'horloge \fBCLOCK_MONOTONIC\fP. .PP Un appel à \fBepoll_wait\fP() bloquera jusqu'à\ : .IP \(bu 2 un descripteur de fichier délivre un événement\ ; .IP \(bu l’appel est interrompu par un gestionnaire de signal\ ; .IP \(bu le délai expire. .PP Remarquez que l’intervalle \fItimeout\fP sera arrondi à la granularité de l'horloge système et que les délais d'ordonnancement du noyau signifient que l'intervalle de blocage pourrait être dépassé d'une petite quantité. Un \fItimeout\fP de \fB\-1\fP force \fBepoll_wait\fP() à attendre indéfiniment, alors qu'un \fItimeout\fP nul force \fBepoll_wait\fP() à se terminer immédiatement, même si aucun événement n'est disponible. .PP La \fIstruct epoll_event\fP est définie ainsi\ : .PP .in +4n .EX 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 */ }; .EE .in .PP Le champ \fIdata\fP de chaque structure \fIepoll_event\fP renvoyée contiendra les mêmes données que celles de l'appel \fBepoll_ctl\fP(2) le plus récent (\fBEPOLL_CTL_ADD\fP, \fBEPOLL_CTL_MOD\fP) pour le descripteur de fichier ouvert correspondant. .PP .\" Le champ \fIevents\fP est un masque de bits qui indique les événements qui se sont produits pour la description de fichier ouvert correspondante. Voir \fBepoll_ctl\fP(2) pour une liste de bits qui peuvent apparaître dans ce masque. .SS epoll_pwait() La relation entre \fBepoll_wait\fP() et \fBepoll_pwait\fP() est similaire à celle entre \fBselect\fP(2) et \fBpselect\fP(2)\ : de même que \fBpselect\fP(2), \fBepoll_pwait\fP() permet à une application d'attendre de façon sûre qu'un descripteur de fichier soit prêt ou qu'un signal arrive. .PP L'appel à \fBepoll_pwait\fP() suivant\ : .PP .in +4n .EX ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask); .EE .in .PP est équivalent à exécuter de façon \fIatomique\fP les appels suivants\ : .PP .in +4n .EX sigset_t origmask; pthread_sigmask(SIG_SETMASK, &sigmask, &origmask); ready = epoll_wait(epfd, &events, maxevents, timeout); pthread_sigmask(SIG_SETMASK, &origmask, NULL); .EE .in .PP Le paramètre \fIsigmask\fP peut valoir NULL, auquel cas, \fBepoll_pwait\fP() est équivalent à \fBepoll_wait\fP(). .SH "VALEUR RENVOYÉE" Lorsqu'il réussit, l'appel \fBepoll_wait\fP() 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 \fItimeout\fP millisecondes. Si une erreur se produit, \fBepoll_wait\fP() renvoie \fB\-1\fP et \fIerrno\fP contient le code approprié. .SH ERREURS .TP \fBEBADF\fP \fIepfd\fP n'est pas un descripteur de fichier valable. .TP \fBEFAULT\fP La zone mémoire pointée par \fIevents\fP n'est pas accessible en écriture. .TP \fBEINTR\fP L'appel a été interrompu par un signal avant, soit qu'aucun des événements demandés n'ait eu lieu, soit que la temporisation \fItimeout\fP n'ait expiré\ ; consultez \fBsignal\fP(7). .TP \fBEINVAL\fP Le descripteur \fIepfd\fP fourni n'est pas un descripteur \fBepoll\fP, ou le paramètre \fImaxevents\fP est inférieur ou égal à zéro. .SH VERSIONS .\" To be precise: kernel 2.5.44. .\" The interface should be finalized by Linux kernel 2.5.66. \fBepoll_wait\fP 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. .PP \fBepoll_pwait\fP a été introduite dans le noyau Linux\ 2.6.19. La prise en charge par la glibc a été ajoutée dans la version\ 2.6. .SH CONFORMITÉ \fBepoll_wait\fP() est spécifique à Linux. .SH NOTES Alors qu'un thread est bloqué par un appel d’\fBepoll_pwait\fP(), il est possible qu'un autre thread ajoute un descripteur de fichier à l'instance \fBepoll\fP attendue. Si le nouveau descripteur de fichier devient prêt, il forcera le déblocage de l'appel \fBepoll_wait\fP(). .PP Si plus d'un descripteur de fichier \fImaxevents\fP est prêt quand \fBepoll_wait\fP() est appelé, les appels \fBepoll_wait\fP() suivants tourneront autour des descripteurs de fichier prêts. Ce comportement aide à éviter les scénarios de manque (starvation), où un processus ne parvient pas à voir que des descripteurs de fichier supplémentaires sont prêts car il se concentre sur des descripteurs déjà connus comme prêts. .PP Remarquez qu'il est possible d'appeler \fBepoll_wait\fP() sur une instance \fBepoll\fP dont la liste d'intérêts est actuellement vide (ou le devient car les descripteurs de fichier se ferment ou sont supprimés des intérêts dans un autre thread). L'appel bloquera jusqu'à ce qu'un descripteur de fichier soit ajouté plus tard à la liste d'intérêts (d'un autre thread) et que ce descripteur de fichier devienne prêt. .SH BOGUES Dans les noyaux jusqu'à la version\ 2.6.37, une valeur \fItimeout\fP plus grande qu'environ \fILONG_MAX\ /\ HZ\fP millisecondes est traitée comme \fB\-1\fP (c'est\-à\-dire l'infini). Ainsi, par exemple, sur un système où \fIsizeof(long)\fP vaut \fB4\fP et la valeur \fIHZ\fP du noyau vaut 1000, cela signifie que les temps d'attente supérieurs à 35,79\ minutes sont traités comme l'infini. .SS "différences entre bibliothèque C et noyau" L'appel système \fBepoll_pwait\fP() brut comporte le sixième argument, \fIsize_t sigsetsize\fP, qui indique la taille en octets de l'argument \fIsigmask\fP. La fonction enveloppe \fBepoll_pwait\fP() de la glibc indique cet argument comme une valeur fixe (égale à \fIsizeof(sigset_t)\fP). .SH "VOIR AUSSI" \fBepoll_create\fP(2), \fBepoll_ctl\fP(2), \fBepoll\fP(7) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP 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/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .