Appels système

Qu'est-ce qu'un appel système sous Linux et comment cela fonctionne-t-il avec des exemples

Qu'est-ce qu'un appel système sous Linux et comment cela fonctionne-t-il avec des exemples

Un appel système est une fonction qui permet à un processus de communiquer avec le noyau Linux. C'est juste un moyen programmatique pour un programme informatique de commander une fonction à partir du noyau du système d'exploitation. Les appels système exposent les ressources du système d'exploitation aux programmes utilisateur via une API (Application Programming Interface). Les appels système ne peuvent accéder qu'au framework du noyau. Les appels système sont nécessaires pour tous les services nécessitant des ressources.

Le noyau Linux est un logiciel propriétaire qui charge et fonctionne sur l'appareil au stade le moins potentiel. Son travail consiste à organiser tout ce qui se passe sur la machine, du clavier, du lecteur de disque et des événements réseau à la fourniture de tranches de temps pour l'exécution simultanée de différents programmes. La séparation des logiciels et du matériel crée une bulle sécurisée qui améliore la protection et la fiabilité. Les applications non privilégiées sont incapables d'atteindre le stockage d'un autre programme, et si l'un échoue, le noyau suspend le processus afin qu'il n'endommage pas l'ensemble du système.

Emballage mince de gaufrette :

Les appels système Linux ne sont pas rendus explicitement au noyau dans certains programmes. Presque tous les programmes utilisent la bibliothèque C de base et offrent un wrapper léger mais essentiel sur les appels système Linux. Le référentiel fournit ensuite l'appel machine Linux d'accompagnement après s'être assuré que les paramètres de fonctionnalité sont traduits dans les bons registres de processeur. Chaque fois que le wrapper reçoit des données de l'appel système, il les analyse et les contribue clairement au programme. Toute opération interactive machine dans un programme est finalement convertie en un appel système. Alors, jetons un coup d'œil à certains d'entre eux. Il existe une longue liste d'appels système Linux que nous pouvons utiliser dans notre système Linux. Voici la liste de certains appels système Linux courants et les plus utilisés.

Discutons de certains des appels système Linux utilisant le langage C dans notre article pour nous familiariser avec.

Appel système ouvert :

Nous pouvons utiliser l'appel système "Open" dans notre distribution Linux pour ouvrir rapidement le document, que nous préciserons dans notre code de langage C. Lancez d'abord le terminal de commande. Vous pouvez utiliser le raccourci "Ctrl+Alt+T". Supposons que vous ayez un fichier texte "test.txt" dans le répertoire personnel, et il contient du contenu. Donc, au début, vous devez créer un nouveau nom de fichier de type C « nouveau.c" dans le terminal via l'éditeur nano. Par conséquent, essayez l'instruction nano ci-dessous simple.

$ nano nouveau.c

Maintenant, l'éditeur Nano a été lancé. Tapez le code ci-dessous. Nous avons deux descripteurs de fichiers dans le code. Les deux fichiers peuvent être ouverts à l'aide de l'appel système ouvert. Le premier descripteur contient un appel de lecture et le second contient la fonction d'écriture. Le premier appel ouvert ouvre le fichier texte "test.txt" et enregistrer son contenu dans le descripteur de fichier "fd". Le deuxième appel système ouvert crée un fichier nommé « cible ». Le document « cible » a été remboursé à un descripteur de fichier « fd1 ». L'instruction d'écriture est utilisée pour transcrire les octets de données dans le tampon. Appuyez sur "Ctrl+S" pour enregistrer le code et appuyez sur la touche de raccourci "Ctrl+X" pour quitter le fichier.

Exécutez l'instruction de compilation gcc pour compiler ce code C.

$ gcc nouveau.c

Exécutons le code en utilisant le simple "a.out" dans le shell comme suit :

$ ./une.en dehors

Les données de sortie ont été transmises au fichier « cible ». Vérifions le fichier « cible » à l'aide de la requête « chat ». L'écran de sortie affiche les données de 20 caractères dans le fichier « cible ».

$ chat cible

Appel système exécutif :

L'appel système exec est rejeté pour exécuter un fichier en cours de traitement. L'ancien fichier exécutable est remplacé et le fichier actuel est utilisé chaque fois que exec est appelé. En utilisant un appel système exec, nous pouvons supposer que cela écrasera l'ancien document ou l'application dans la boucle par un nouveau. Un nouveau logiciel est utilisé pour remplacer tout le matériel du processus. Le document dont le titre est donné dans l'instruction chaque fois que l'on invoque exec() est remplacé par la section d'informations utilisateur qui exécute l'appel système exec() (). Ouvrez donc le terminal de commande et, à l'aide de l'éditeur nano, créez un nouveau fichier de type C comme suit :

$ nano exp.c

L'éditeur a été ouvert maintenant. Écrivez le code du langage C ci-dessous dans son intégralité. Il contient trois bibliothèques principales. Après cela, la fonction principale a été instanciée. L'instruction print a montré les données de chaîne et l'ID de processus du fichier "exp.c". La fonction getpid() a été utilisée à cette fin. Ensuite, nous avons un tableau de types de caractères avec quelques valeurs dedans. L'appel système exec a été utilisé pour prendre le nom du fichier et le tableau ci-dessus comme argument. Maintenant, le fichier « bonjour.c" sera traité. Après cela, une autre instruction print arrive jusqu'à présent, mais elle ne sera jamais exécutée. Appuyez sur « Ctrl+S » pour enregistrer ce fichier. Appuyez sur « Ctrl+X » pour quitter.

Il est maintenant temps de créer un autre fichier c, "Bonjour.c" à l'aide de l'éditeur nano. Utilisez la requête ci-dessous dans le shell pour le faire.

$ nano bonjour.c

Écrivez-y le code ci-dessous. Ce code contient deux instructions d'impression dans la fonction principale. Le premier imprime uniquement une chaîne qui y est donnée, et le second imprime la chaîne tout en récupérant l'ID de processus du fichier actuellement utilisé, qui est "bonjour.c".

Compilons les deux fichiers l'un après l'autre en utilisant gcc.

$ gcc -o exp exp.c

$ gcc -o bonjour bonjour.c

Lorsque nous exécutons l'exp.c, il affichera la première instruction print de l'exp.c et les deux lignes d'impression du bonjour.fichier c.

$ ./exp

Conclusion:

Nous avons élaboré sur l'ensemble du concept des appels système Linux et comment ils peuvent être utilisés dans votre système Linux. Nous avons utilisé Ubuntu 20.04 lors de la mise en œuvre de ce concept.

Comment développer un jeu sur Linux
Il y a dix ans, peu d'utilisateurs de Linux prédisaient que leur système d'exploitation préféré serait un jour une plate-forme de jeu populaire pour l...
Ports Open Source des moteurs de jeux commerciaux
Les récréations de moteur de jeu gratuites, open source et multiplateformes peuvent être utilisées pour jouer à d'anciens ainsi qu'à certains des titr...
Meilleurs jeux de ligne de commande pour Linux
La ligne de commande n'est pas seulement votre plus grand allié lorsque vous utilisez Linux, elle peut également être une source de divertissement car...