GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi select est-il utilisé sous Linux

Programmes qui veulent continuer à s'exécuter tout en aussi la lecture des entrées utilisateur interactives doit être multithread ou ils doivent lire attentivement les flux d'entrée et, plus précisément, de manière conditionnelle.

Select(2) peut être utilisé pour implémenter le deuxième modèle de conception. Il peut déterminer si l'entrée peut être lue sans bloquer l'ensemble de l'application.


Le select() L'appel système vous indique s'il y a des données à lire sur les descripteurs de fichiers qui vous intéressent. Strictement, il s'agit de savoir si une opération de lecture sur le descripteur de fichier bloquera ou non.

Si vous exécutez read() sur un descripteur de fichier - tel que celui connecté à un port série - et qu'il n'y a pas de données à lire, l'appel sera suspendu jusqu'à ce qu'il y ait des données à lire. Programmes utilisant select() ne souhaite pas être bloqué comme ça.

Vous demandez également :

Pourquoi devons-nous incrémenter le descripteur de fichier de 1 et le transmettre alors que je transmets le descripteur de fichier déjà défini sur select ?

Cela spécifie probablement la taille du FD_SET. Le premier argument de select() est connu sous le nom de nfds et POSIX dit :

Le nfds L'argument spécifie la plage de descripteurs à tester. Le premier nfds les descripteurs doivent être vérifiés dans chaque ensemble ; c'est-à-dire les descripteurs de zéro à nfds-1 dans les ensembles de descripteurs doivent être examinés.

Donc, pour tester un descripteur de fichier n , la valeur en nfds doit être au moins n+1 .


Vous utilisez l'appel select lorsque vous devez surveiller en permanence les descripteurs de fichiers jusqu'à ce qu'ils soient prêts pour des E/S sans blocage.

Généralement utilisé lorsque vous voulez que l'IO (par exemple read()) ne soit pas bloquant, lisez la page :man

Lisez également les API associées


Linux
  1. Linux - Tout est un fichier ?

  2. 10 exemples pratiques de commandes Linux Cut pour sélectionner des colonnes de fichiers

  3. Pourquoi avons-nous besoin du fichier .so.1 sous Linux ?

  4. Pourquoi avons-nous 3 types de sélections X dans LINUX ?

  5. Pourquoi rsync ne parvient-il pas à copier les fichiers de /sys sous Linux ?

Commande de fichier Linux

Comment créer un fichier sous Linux

Moins de commande sous Linux

Commande Gzip sous Linux

Comment lire un fichier avec des espaces sous Linux

Commandes Linux fréquemment utilisées par les administrateurs système Linux - Partie 5