C Programmation

Comment utiliser l'appel système de sondage en C

Comment utiliser l'appel système de sondage en C
La fonction poll() permet aux programmes de multiplexer l'entrée et la sortie via une série de descripteurs de fichiers. En d'autres termes, l'appel système poll() est analogue à l'appel système select() car il retient son feu pour l'un des plusieurs descripteurs de fichiers en devenant disponible pour les E/S. Poll () examine le descripteur de document attribué pour répertorier le ou les événements dans les incidents pour chaque élément du tableau pointant vers lui par les descripteurs de fichier. La méthode poll() peut déterminer dans quels descripteurs de fichiers un programme va lire ou écrire les détails, qui ont vu ces incidents. Dans ce guide, nous utiliserons Ubuntu 20.04 pour comprendre pas à pas le concept d'appel système poll() sur Linux.

Syntaxe:

int poll(struct pollfd *ufds, int nfds non signés, int timeout);

L'argument « fds » détermine les descripteurs de documents à vérifier, ainsi que les incidents significatifs pour chaque. C'est une référence soit à un tableau qui a un élément pour chaque descripteur de document ouvert. Les éléments du tableau sont des structures pollfd, où fd désigne un descripteur de document ouvert, et tous les événements et ré-événements, généralement appelés masques de bits, sont générés en créant une fusion des drapeaux d'événements correspondants :

POLLIN :

Outre les données prioritaires, les données d'information peuvent être lues sans même être bloquées. De plus, si le message de réponse est de taille nulle, ce signal d'indicateur est généré pour les STREAMS dans les événements. Ce drapeau a la même signification que POLLRDNORM | BANDE POLLR.

POLLRDNORM :

Sans interruption, les données d'information ordinaires peuvent être lues. Les informations sur la priorité principale de la bande 0 peuvent être lues malgré l'interruption des FLUX. Et si le message de réponse est de longueur nulle, ce signal est généré dans les ré-événements.

BANDE POLLR :

Les données de préoccupation principale seront lues malgré les retards. Les informations sur les plages de priorité supérieures à zéro peuvent être lues malgré une interférence dans les FLUX. Et si la réponse au message est de durée nulle, ce signal se propage dans les événements.

POLLPRI :

Il peut y avoir quelques exceptions au descripteur de document. Les informations prioritaires peuvent être lues sans être bloquées. De plus, si la réponse est de durée nulle, ce signal est propagé pour les STREAMS dans les événements.

SONDAGE :

Les utilisateurs peuvent écrire à l'aide du drapeau POLLOUT. Privé d'arrêt, des données typiques peuvent être enregistrées. Les informations sur la bande de préférence 0 peuvent être enregistrées malgré l'interruption de STREAMS.

NORME DE POLLUTION :

Cela fonctionne de la même manière que POLLOUT.

BANDE DE SONDAGE :

Les données les plus prioritaires seront écrites à l'aide de ce drapeau. Les informations sur les plages de préférence supérieures à zéro pour STREAMS peuvent être enregistrées sans être bloquées. Cette activité n'évalue que les bandes qui ont déjà été écrites au moins une fois car aucune bande de préférence n'a été écrite sur ce STREAM.

SONDEUR :

Il s'agit d'une condition d'erreur et ne se produit que lorsque le système ou le flux a rencontré un problème. Ce symbole ne s'applique qu'au masque de bits revents ; tout au long des activités participant, il est négligé.

SONDAGE :

Il spécifie la condition de raccrochage et ne se produit que lorsque la connexion au système a été désactivée. Cette occurrence et POLLOUT sont également compatibles ; une fois qu'un problème est survenu, un flux ne sera jamais écrit.

SONDAGE :

Ceci spécifie la demande invalide ou inhabituelle. Cette activité n'exclut néanmoins pas la participation à POLLIN, POLLRDNORM, POLLRDBAND ou POLLPRI. Ce symbole ne s'applique qu'au masque de bits revents ; il est négligé chez le participant de l'événement.

Exemple d'appel système d'interrogation :

Il joue le même rôle que select(), bien qu'à plus grande échelle. Poll() est disponible sur n'importe quelle machine Linux basée sur Glibc. Les noyaux plus anciens imitent poll() avec select() dans toute la bibliothèque C. Cependant, les programmes ne devraient pas avoir besoin de faire une distinction. Voici un exemple de ce à quoi ressemble poll(). Ouvrez donc d'abord le terminal de ligne de commande à l'aide de la touche de raccourci "Ctrl+Alt+T.” Après l'avoir ouvert, nous devons créer un fichier de type C pour y écrire un code de type C. Pour cela, nous avons utilisé l'éditeur nano. Alors, essayez la commande nano ci-dessous dans le terminal avec le nom du fichier C.

$ nano nouveau.c

Maintenant, l'éditeur nano pour le fichier C "nouveau" a été ouvert. Vous devez d'abord y inclure quelques bibliothèques, en particulier le "sondage.bibliothèque h". La fonction principale a été spécifiée comme ayant un type de retour entier avec deux arguments dans son paramètre, e.g., argc et argv. Ensuite, nous avons déclaré un descripteur de fichier fd et un tableau de types de caractères nommé « buf.” Après cela, une variable de type structure a été définie nommée pollfd pfds de taille 2. Ensuite, un appel système ouvert a été déclaré pour obtenir la valeur du tableau de types de caractères et l'affecter au descripteur de fichier "fd" comme on le voit dans l'image. Alors que le descripteur de fichier est "1", la structure "pfds" sera mise à jour avec certaines données en utilisant le drapeau POLLIN à l'intérieur. Nous avons maintenant défini une fonction d'appel système poll(). Le premier paramètre de l'appel système poll() est la structure ufds utilisée dans le code. Le deuxième paramètre spécifie le total des structures pollfd dans la série fds.

Et le dernier paramètre affiche la valeur de délai d'attente de type entier pour l'appel système de sondage. Si les pfds sont des revents et ajoutés avec une valeur de 0, alors l'appel système read lira les données du tampon. L'instruction "if" sera utilisée pour vérifier si l'instruction read a renvoyé sa valeur à un entier et écrire des données. Si la structure "pfds" est à la position "1" lors de la réception et de la saisie des données, l'appel système read utilisera les données d'un tampon tout en utilisant le descripteur "fd".

Enregistrez le nouveau.c et fermez-le. Maintenant, compilez-le en utilisant le compilateur gcc.

$ gcc nouveau.c

Lors de l'exécution de ce code, nous avons ajouté des données dans un sondage à lire, et il écrit à nouveau les données comme dans la sortie ci-dessous.

$ ./une.en dehors

Conclusion:

Dans cet article décrit ci-dessus, nous avons discuté de l'appel système poll() en langage C. J'espère que vous trouverez ce tutoriel utile et efficace lorsque vous travaillez sur le système d'exploitation Linux.

Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...
Comment changer les boutons gauche et droit de la souris sur un PC Windows 10
Il est tout à fait normal que tous les appareils de souris d'ordinateur soient conçus de manière ergonomique pour les droitiers. Mais il existe des so...