Comment utiliser l'appel du système de scrutin dans c

Comment utiliser l'appel du système de scrutin dans c
La fonction Poll () permet aux programmes de multiplexer les entrées et la sortie via une série de descripteurs de fichiers. En d'autres termes, l'appel du système Poll () est analogue pour sélectionner () l'appel du système en travaillant car il détient son feu pour l'un des nombreux descripteurs de fichiers en devenant disponibles pour les E / S. Poll () examine le descripteur de document assigné pour répertorier l'événement dans les incidents à chaque élément du tableau pointant vers le pointant par des descripteurs de fichiers. La méthode Poll () peut déterminer lesquelles des descripteurs de fichiers Un programme lira ou rédigera des détails, qui ont vu ces incidents. Dans ce guide, nous utiliserons Ubuntu 20.04 Pour comprendre le concept de Poll () appelez le système sur étape par étape.

Syntaxe:

INT POLL (struct poollfd * UFDS, unsigned int nfds, int timeout);

L'argument «FDS» détermine les descripteurs de documents à vérifier, ainsi que les incidents de signification pour chaque. C'est une référence à 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éteurs, généralement appelés massass, sont générés en créant une fusion des drapeaux d'événement correspondants:

Polline:

Outre les données de grande priorité, les données d'information peuvent être lues privées d'être même bloquées. De plus, si le message de réponse est de tailles zéro, ce signal de drapeau est généré pour les flux dans les réseaux. Ce drapeau a la même signification que Polrdnorm | Bandeau.

Polrdnorm:

Sans interruption, les données d'informations ordinaires peuvent être lues. Les informations sur la préoccupation prioritaire principale La bande 0 peut être lu malgré l'interruption des flux. Et si le message de réponse est de longueur zéro, ce signal est généré dans les réévéteurs.

Polrdband:

Les données de préoccupation principale seront lues malgré les retards. Les informations sur les gammes de priorités supérieures à zéro peuvent être lues malgré l'interférence dans les flux. Et si la réponse du message est de durée nulle, ce signal se propage dans les révisés.

Polrpri:

Il peut y avoir quelques exceptions au descripteur de document. Les informations avec une priorité absolue peuvent être lues privées d'être bloquées. De plus, si la réponse est de durée nulle, ce signal se propage pour les flux dans les révisés.

Pollout:

Les utilisateurs peuvent écrire en utilisant le drapeau du scrutin. Privés de l'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 des flux.

PollWrnorm:

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

Pollwrand:

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 les flux peuvent être enregistrées sans être bloquées. Cette activité évalue uniquement les groupes qui ont déjà été écrits au moins une fois, car aucun groupe de préférence n'a été écrit sur ce flux.

POLTEUR:

C'est 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'aux révisés Bitmask; Tout au long du participant des activités, il est négligé.

Pollhup:

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

Pollnval:

Cela spécifie la demande non valide ou inhabituelle. Cette activité n'exclut néanmoins pas la participation à la pollinis. Ce symbole ne s'applique qu'aux révisés Bitmask; il est négligé dans le participant de l'événement.

Exemple d'appel du système de sondage:

Il joue le même rôle que Select (), bien qu'à une plus grande échelle. Poll () est disponible sur n'importe quelle machine Linux basée sur GLIBC. Les noyaux plus anciens imitent le sondage () 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 que ressentent Poll (). Alors ouvrez d'abord le terminal de la ligne de commande en utilisant la clé 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 utilisons 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 certaines 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 fichiers FD et un tableau de type de caractères nommé «BUF."Après cela, une variable de type structure a été définie nommée PFD Pollfd de taille 2. Ensuite, un appel système ouvert a été déclaré obtenir la valeur du tableau de type de caractère et l'affecter au descripteur de fichier «FD» comme le montre l'image. Alors que le descripteur de fichier est «1», la structure «PFD» sera mise à jour avec certaines données en utilisant l'indicateur de pollin. Maintenant, nous avons défini une fonction d'appel du système de sondage (). Le premier paramètre de l'appel du 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'expiration de type entier pour l'appel du système de sondage. Si les PFD sont des révisés et ajoutés avec une valeur de 0, alors l'appel du système de lecture lira les données du tampon. L'instruction «IF» sera utilisée pour vérifier si l'instruction de lecture a renvoyé sa valeur à un entier et des données d'écriture. Si la structure «PFD» est en position «1» tout en réent et en entrant les données, l'appel du système de lecture utilisera les données d'un tampon tout en utilisant le descripteur «FD».

Enregistrer le nouveau.C fichier 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 des données comme dans la sortie ci-dessous.

$ ./un.dehors

Conclusion:

Dans cet article décrit ci-dessus, nous avons discuté de l'appel du système Poll () dans la langue C. J'espère que vous trouverez ce tutoriel utile et efficace tout en travaillant sur le système d'exploitation Linux.