Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1530 connectés 

  FORUM HardWare.fr
  Programmation
  C

  fonction poll() en C sous linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction poll() en C sous linux

n°1614091
maider29
Posté le 22-09-2007 à 13:40:07  profilanswer
 

Sous linux la fonction poll() permet d'attendre un evènement, mais comment fonctionne exactement cette fonction ? attend elle réellement un évènement soit : elle constate un changement d'état ? ou surveille t'elle une pile dans la quelle sont stockés les évènement, cette dernière situation conduirait à ce que poll() réveille le processus alors que l'évènement présent dans la pile n'est pas forcément arrivé recement mais est un ancien évènement qui n'a pas été retiré de la pile.
 
Je précise que je me suis tapé pas mal de "man poll()" et que même si j'ai mon avis sur la question j'aimerais avoir une réponse claire d'un vrai spécialiste.

mood
Publicité
Posté le 22-09-2007 à 13:40:07  profilanswer
 

n°1614128
olivthill
Posté le 22-09-2007 à 18:06:09  profilanswer
 

La fonction poll() fonctionne de la manière suivante :
 
1. Regarde si l'état interrogé est atteint ou non.
Par exemple, est-ce qu'il est possible de lire des données dans le fichier ou le flux ? Est-ce qu'il est possible d'écrire dans le fichier ou d'envoyer des données un flux maintenant ou est-ce que ce n'est pas possible (car une autre application serait en train de faire une écriture) ? La permission de lire ou d'écrire peut être très récente ou très ancienne. Ce qui compte c'est que la permission soit valable à l'instant présent.
 
2. Si l'état interrogé n'est pas atteint, alors il y a une boucle jusqu'à ce que l'état soit atteint ou que le timeout soit dépassé. La manière dont se déroule cette partie peut dépendre des systèmes Unix, et des types de flux considérés (si c'est un fichier, si c'est un flux de données sur un réseau, etc.).
 
La fonction poll() ne réveille personne. Elle lit juste l'état en cours, et si l'état n'est pas encore celui qui est requis, alors elle attend que l'état change avant la fin du timeout. Il n'y a pas de surveillance de pile. La fonction poll() est basée sur la lecture des tables internes à Unix associées aux fichiers et aux flux. La fonction poll() fonctionne comme la fonction select() qui, elle-aussi, est passive.

n°1614250
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-09-2007 à 15:38:06  profilanswer
 

maider29 a écrit :

Sous linux la fonction poll() permet d'attendre un evènement, mais comment fonctionne exactement cette fonction ?


Comme select(), elle suspend le thread courant jusqu'à réception d'un évènement programmé (E/S sur un descripteur, timeout).
 
http://www.opengroup.org/onlinepub [...] /poll.html
 
Les détails internes appartiennent à chaque implémentation et ne sont que de peu d'intérêt, sauf si tu dois imlémenter poll() pour un module Linux. Dans ce cas, il faut se référer à la documentation technique de Linux (et ça dépend du noyau).
 
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  fonction poll() en C sous linux

 

Sujets relatifs
Problème fonction 'require once'Compiler sous Windows pour Linux
copie de fichiers vers dossiers en fonction du nom de fichierDoubles guillemets dans fonction mail()
[C-preprocessor] L'inverse d'une fonction variadique[JS] Appel fonction d'une autre page
fonction ifcreat table en php avec une fonction en +
fonction date VBA[Résolu] Fonction readfile() et chemins relatifs/absolus
Plus de sujets relatifs à : fonction poll() en C sous linux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR