Comment utiliser l'appel système ouvert en C

How Use Open System Call C



Les appels système sont utilisés dans les distributions Linux pour fournir une porte au sein du système d'exploitation Linux et des programmes. Le système d'exploitation Linux utilise la bibliothèque Glibc pour prendre en charge les appels système tout en utilisant le langage C. Il existe également de nombreuses autres façons d'utiliser les appels système. Dans ce guide d'article, nous discuterons de l'appel système ouvert dans le système Linux. L'appel système Open a été utilisé pour ouvrir rapidement le fichier spécifié dans le chemin. Il nous permet de connaître le descripteur de fichier d'un fichier créé par l'utilisateur. Nous avons utilisé Ubuntu 20.04 pour obtenir un appel système Open pratique.

Installer des bibliothèques

Le langage C nécessite l'installation de certains packages de bibliothèque supplémentaires en tant que prérequis. Tout d'abord, vous devez installer le paquet manpages-dev pour vérifier les informations concernant les appels système. Ouvrez le terminal de ligne de commande à partir de la zone d'activité et exécutez l'instruction ci-dessous pour installer les pages de manuel.







$ sudo apt installer les pages de manuel-développeur



La sortie pour l'achèvement de l'installation a été donnée ci-dessous.







Nous allons maintenant vérifier l'appel système ouvert à l'aide de la commande man comme ci-dessous.

$ homme2ouvert



La page de manuel de sortie pour l'appel système Open a été affichée ci-dessous. Vous pouvez voir les informations supplémentaires à ce sujet. Appuyez sur la touche q pour le quitter.

La syntaxe ci-dessus montre les trois premières lignes des bibliothèques nécessaires à ajouter pour les appels système. Il existe trois syntaxes disponibles pour l'appel système ouvert. La première syntaxe montre le chemin d'accès, qui est le nom d'un fichier à ouvrir. Le deuxième paramètre, flags, indique le mode d'un fichier, par exemple, lecture ou écriture. La deuxième syntaxe peut être utilisée lorsque le fichier n'existe pas. Le mode paramètre est utilisé pour afficher les privilèges sur le fichier.

Il est maintenant temps d'installer le compilateur GCC pour le débogage du code C dans la distribution Linux Ubuntu 20.04. Pour cela, exécutez l'instruction ci-dessous dans le shell pour le faire.

$ sudo apt installer gcc

Il vous faut appuyer sur Y pour continuer à installer le compilateur GCC, sinon appuyez sur le bouton n pour fermer l'installation. Appuyez donc sur le bouton y et appuyez sur Entrée pour continuer.

La sortie pour l'achèvement est indiquée ci-dessous.

Exemple 01

Regardons l'exemple très simple d'un appel système Open. Tout d'abord, ouvrez le shell de commande et créez un nouveau fichier texte test.txt à l'aide de la simple commande tactile comme suit :

$touchertest.txt

Ajoutez-y des données manuellement. Vous pouvez voir les données dans un fichier en utilisant la commande cat ci-dessous.

$chattest.txt

Créons maintenant un nouveau fichier C à l'aide d'une commande nano dans le shell, comme indiqué ci-dessous.

$nanonouveau.c

Le fichier GNU nano ci-dessous sera ouvert. Vous devez y taper le code du langage C ci-dessous. Vous pouvez voir que nous avons ajouté les packages de bibliothèque nécessaires pour que le code C soit exécuté correctement. Après cela, nous avons défini la fonction principale pour travailler sur un appel système Open. Nous avons déclaré deux variables entières. La variable n est utilisée pour compter les valeurs de tampon, et le fd est utilisé pour le descripteur de fichier. Nous avons déclaré le tableau de tampons de type caractère comme buf de taille 50. L'appel système open a été utilisé pour lire le contenu du fichier test.txt et le renvoyer au descripteur de fichier. Le O_RDONLY a été utilisé à des fins de lecture. La ligne suivante montre l'appel système read pour récupérer les 10 octets du tampon et les renvoyer dans l'entier n. De plus, la commande d'écriture a été utilisée pour écrire le contenu ou les données de la mémoire tampon dans le descripteur de fichier, qui est l'écran de sortie dans notre cas en ce moment. Enregistrez ce fichier à l'aide de Ctrl+S et fermez-le à l'aide de la commande Ctrl+X.

#comprendre
#comprendre
#comprendre
#comprendre

entierprincipale()
{
entierm,fd;
carboniserbuf[cinquante];
fd=ouvert(test.SMS,O_RDONLY);
m=lire(fd,buf, dix);
écrivez(1 ,buf, dix);

Compilons d'abord le code C pour un appel système ouvert à l'aide de la commande gcc ci-dessous.

$gccnouveau.c

Il est maintenant temps de vérifier la sortie du code C pour un appel système ouvert. Utilisons la commande ci-dessous a.out dans le shell. La sortie affiche les 10 octets du contenu d'un fichier test.txt.

$./à.dehors

Prenons un autre exemple pour écrire le contenu d'un fichier dans un autre fichier à l'aide d'un appel système Open. Pour créer un nouveau fichier C en utilisant la commande nano comme ci-dessous.

$ nano nouveau.c

Prenez donc le même code avec une modification mineure. Nous avons défini un autre descripteur de fichier dans le code comme fd1. Tout le code est le même à l'exception d'une ligne supplémentaire. L'avant-dernière ligne du code a utilisé l'appel système open pour créer un nouveau fichier nommé target en utilisant O_CREAT et le mode en écriture seule O_WRONLY. 0642 montre les privilèges attribués à ce fichier. Et le fichier a été renvoyé à un nouveau descripteur de fichier. La ligne suivante a montré une commande pour écrire les octets de contenu dans le tampon en fonction de son descripteur de fichier. Enregistrez le fichier et fermez-le.

Exécutez la commande de compilation gcc pour déboguer le fichier en langage C.

$ gcc nouveau.c

Pour afficher la sortie du code C, essayez l'instruction a.out dans le shell comme ci-dessous. Il n'y a pas de sortie car la sortie a été redirigée vers la cible de fichier nouvellement créée.

$./à.dehors

Vérifions les données d'un fichier cible à l'aide de la commande cat. La sortie montre que le fichier contient 20 octets.

$ chat cible

Conclusion

Dans le tutoriel ci-dessus, nous vous avons expliqué comment utiliser un appel système ouvert en langage C en utilisant le compilateur gcc. A l'aide de différents exemples expliqués dans ce guide, vous serez amené à mettre en œuvre le programme souhaité.