poll | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <poll.h> int poll(struct pollfd *ufds, nfds_t nfds, int délai); int poll(struct pollfd *fds, nfds_t nfds, int délai); #define _GNU_SOURCE #include <poll.h> int ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *délai, const sigset_t *sigmask);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'ensemble des descripteurs de fichiers à surveiller est spécifié dans l'argument fds qui est un tableau de structures nfds structures du type :
struct pollfd { int fd; /* Descripteur de fichier */ short events; /* Événements attendus */ short revents; /* Événements détectés */ };Le champ fd contient un descripteur de fichier ouvert. Le champ events est un paramètre d'entrée, un masque de bits indiquant les événements qui intéressent l'application. Le champ revents est un paramètre de sortie, rempli par le noyau avec les événements qui se sont effectivement produits. Les bits renvoyés dans revents peuvent inclure ceux spécifiés dans events, POLLERR, POLLHUP ou POLLNVAL. (Ces trois bits n'ont pas de signification dans la demande events, et se trouvent positionnés dans la valeur de retour revents si l'une des conditions correspondantes se produit).
Si aucun événement attendu (ni aucune erreur) ne s'est déjà produit, poll() bloquera jusqu'à ce que l'un des événements survienne. L'argument délai spécifie une limite haute, en millisecondes, sur le temps pendant lequel poll() bloquera. Spécifier une valeur ngative pour délai signifie un délai d'attente infini.
Les bits qui peuvent être positionnés/renvoyés dans events et revents sont définis dans <sys/poll.h> :
Si on compile avec _XOPEN_SOURCE définie, on a également les choses suivantes, qui ne contient pas plus d'information que les bits précédents :
ppoll() | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Outre la différence de l'argument délai, l'appel ppoll() suivant :
ready = ppoll(&fds, nfds, timeout, &sigmask);est équivalent à l'exécution atomique des appels suivants :
sigset_t origmask; sigprocmask(SIG_SETMASK, &sigmask, &origmask); ready = poll(&fds, nfds, timeout); sigprocmask(SIG_SETMASK, &origmask, NULL);
Voir la description de pselect(2) pour une explication sur pourquoi ppoll() est nécessaire.
Si l'argument sigmask est défini comme NULL, aucune manipulation de masque de signal n'est effectuée (et ainsi ppoll() ne diffère de poll() que dans la précision de l'argument timeout).
L'argument timeout spécifie une limite haute sur le temps total pendant lequel ppoll() bloquera. Cet argument est un pointeur sur une structure de la forme :
struct timespec { long tv_sec; /* secondes */ long tv_nsec; /* nanosecondes */ };
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VERSIONS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'appel système a été ajouté à Linux dans le noyau 2.6.16. ppoll() a été ajouté à Linux dans le noyau 2.6.16. La fonction de bibliothèque ppoll() a été ajoutée dans la glibc 2.4
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Notes Linux | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 21 juillet 1997 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 poll ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |