Appel du système SEMCTL dans C

Appel du système SEMCTL dans C
Le langage C propose l'appel du système SEMCTL dans le système Linux. Cet appel système a été largement utilisé dans le système Linux pour effectuer les processus de contrôle spécifiés par la coque de la console sur un ensemble de sémaphore particulier. Les sémaphores sont connus largement utilisés pour donner accès aux processus de communication les uns avec les autres. Le sémaphore peut être une variable ayant un type de données abstrait pour l'accès au contrôle de 1 ressource pour de nombreuses procédures. Par conséquent, l'appel système SEMCTL a été utilisé ici pour contrôler l'ensemble de sémaphore. Commençons par vous inscrire à partir du système Linux.

Ouvrez l'application de la console à partir de la zone de recherche. Une autre façon alternative pour ouvrir la console est via "Ctrl + Alt + T".

Exemple:

Créez un nouveau fichier C dans le dossier domestique du système Linux avec l'utilisation de la commande «Touch». Nous avons nommé ce fichier C comme «semctl.C ". Vous pouvez le nommer comme vous le souhaitez. La requête est la suivante:

$ touch semim.c

L'éditeur GNU Nano sera utilisé pour modifier et ouvrir le fichier. Ainsi, la requête ci-dessous indiquée a été utilisée pour ouvrir le «semctl.Fichier C ”.

$ nano semctl.c

Comme indiqué dans l'image sous le fait que le fichier a déjà été ouvert dans l'éditeur. Écrivez le même code dans votre fichier pour voir le fonctionnement de l'appel système «semctl ()». Le fichier d'en-tête pour l'entrée-sortie et les sémaphores a été inclus au début du fichier C. La méthode principale a été déclarée avec une autre fonction, "get_val ()". À partir de la méthode principale, nous avons défini une variable «V» obtenant sa valeur à partir de la fonction get_val. Cette méthode a été appelée lors de son adoption avec deux arguments dans les paramètres. Maintenant, le contrôle a été donné à la fonction get_val (). Cette fonction contient deux arguments, e.g. Sid comme ID de sémaphore et «Semnum» comme numéro de sémaphore. Les valeurs passées 1 et 4 seront enregistrées à ces arguments.

La commande SEMCTL a été utilisée dans la fonction pour obtenir l'ensemble de sémaphore actuel à l'aide de l'ID de sémaphore et du numéro de sémaphore. La fonction GetVal a été utilisée ici pour obtenir la valeur de sémaphore actuelle. Après la collecte d'une valeur de sémaphore, il a été renvoyé à la méthode principale. La valeur a été stockée dans la variable «V». Cette valeur de variable sera affichée à l'aide de l'instruction PRINTF affichée dans le code C. Vous pouvez maintenant enregistrer le code terminé par «Ctrl + S» et le laisser à la console en utilisant les commandes de raccourci «Ctrl + X».

Compilons le «semctl.Fichier C ”dans la console. Utilisez le compilateur «GCC» recommandé pour de tels types de codes C compliqués. La compilation renvoie l'avertissement, mais il n'y a pas besoin de panique. Exécutez votre fichier avec le «A.Commande. La sortie montre que la valeur de sémaphore actuelle est «-1».

$ gcc semctl.c
$ ./un.dehors

Ouvrons à nouveau le fichier pour le rendre un peu différent. Ouvrez-le à l'aide de l'éditeur «Nano» et définissez la variable «Max_Comps» avec une certaine valeur, E.g. dix. Cette fois, mettez à jour le code avec le script ci-dessous affiché. Commencez par l'initialisation de la méthode principale. Il contient l'appel de fonction de la méthode comp_use (). Maintenant, le contrôle a été donné à la méthode comp_use.

La fonction comp_use contient la boucle «pour» pour utiliser la valeur de la variable «Max_Comps» comme valeur maximale à la boucle «For». Jusqu'à la fin de la boucle, l'instruction IMPREST affichera le numéro d'ordinateur. Il obtient également et imprime la valeur de sémaphore actuelle de la méthode «get_val» en l'appelant ici. La méthode get_val a été exécutée et a renvoyé sa valeur à l'instruction d'impression de la fonction comp_use () pour l'afficher à l'écran. Enregistrez le fichier de code une fois de plus et quittez-le pour revenir.

Nous devons maintenant compiler le code mis à jour avec la commande «GCC» pour la compilation. Après la compilation réussie, nous avons exécuté le fichier et obtenu la valeur du sémaphore pour chaque ordinateur.

$ gcc semctl.c
$ ./un.dehors

Conclusion:

L'appel du système SEMCTL et son fonctionnement ont été clairement démontrés dans ce guide avec le langage C à l'aide d'Ubuntu 20.04 Système Linux. Nous espérons que vous trouverez cet article utile lors de la compréhension et de l'apprentissage des concepts de sémaphores dans le système Linux.