.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2003 Davide Libenzi .\" Davide Libenzi .\" and Copyright 2007, 2012, 2014, 2018 Michael Kerrisk .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" 2007-04-30: mtk, Added description of epoll_pwait() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH epoll_wait 2 "3 mai 2023" "Pages du manuel de Linux 6.05.01" .SH NOM epoll_wait, epoll_pwait epoll_pwait2 \- Attendre un événement d'E/S sur un descripteur de fichier epoll .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .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 *_Nullable \fP\fIsigmask\fP\fB);\fP \fBint epoll_pwait2(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP \fB int \fP\fImaxevents\fP\fB, const struct timespec *_Nullable \fP\fItimeout\fP\fB,\fP \fB const sigset_t *_Nullable \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 \- 3 un descripteur de fichier délivre un événement\ ; .IP \- l’appel est interrompu par un gestionnaire de signal\ ; .IP \- 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écrite dans \fBepoll_event\fP(3type). .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(). .SS epoll_pwait2() L'appel système \fBepoll_pwait2\fP() est équivalent à \fBepoll_pwait\fP(), sauf concernant l'argument \fItimeout\fP. Il prend un argument de type \fItimespec\fP pour pouvoir indiquer le délai de résolution en nanosecondes. Cet argument fonctionne de la même façon que \fBpselect\fP(2) et \fBppoll\fP(2). Si \fItimeout\fP est NULL, \fBepoll_pwait2\fP() peut bloquer indéfiniment. .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 est positionné pour indiquer l'erreur. .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 STANDARDS Linux. .SH HISTORIQUE .TP \fBepoll_wait\fP() .\" To be precise: Linux 2.5.44. .\" The interface should be finalized by Linux 2.5.66. Linux 2.6, glibc 2.3.2. .TP \fBepoll_pwait\fP() Linux 2.6.19, glibc 2.6. .TP \fBepoll_pwait2\fP() Linux 5.11. .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. .SS "Différences entre bibliothèque C et noyau" Les appels système \fBepoll_pwait\fP() et \fBepoll_pwait2\fP() bruts comportent un 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 BOGUES Avant Linux\ 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. .SH "VOIR AUSSI" \fBepoll_create\fP(2), \fBepoll_ctl\fP(2), \fBepoll\fP(7) .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 .