Appel du système de fourche dans c

Appel du système de fourche dans c

«L'objectif de base de la méthode de commande de fourche est de créer un ou plusieurs processus enfants; Les processus d'enfants nouvellement créés s'exécutent simultanément avec le processus parent qui a créé ces processus d'enfants à l'aide d'instructions de fourchettes. La déclaration suivante suivie par la commande Fork sera exécutée simultanément par les processus enfants et parents. Les mêmes enregistrements du CPU, le compteur de programmes (PC) et les fichiers ouverts auxquels les accès au processus parent sont utilisés par le processus de l'enfant. La commande de fourche ne prend aucun paramètre comme entrée, mais il renvoie une valeur entière en utilisant lequel nous pouvons facilement identifier si l'une ou l'autre commande de fourche a créé le processus enfant avec succès ou non."

Vous trouverez ci-dessous la liste des valeurs renvoyées par la méthode de la fourche:

  • Valeur négative: Le processus de création d'un processus d'enfant a échoué.
  • Zéro: Le processus d'enfant qui vient d'être créé a été retourné.
  • Valeur positive: Retourné à l'appelant ou au parent avec une valeur positive. L'ID de processus du processus enfant nouvellement généré est contenu dans la valeur.

Une chose à garder à l'esprit est que Fork est une méthode de filetage; Par conséquent, pour voir les résultats; vous devez exécuter le processus sur le système local. La commande Fork peut nécessiter certains fichiers d'en-tête ou de bibliothèque, tels que SYS / TYPES.H et Unistd.H. Vous devez configurer un système d'exploitation Linux ou Unix pour exécuter le programme car la commande Fork ne peut pas être utilisée dans un environnement Windows. Vous devez d'abord confirmer que le compilateur GCC a été mis en place dans l'environnement du système d'exploitation. Pour ce faire, nous devons d'abord lancer le terminal, puis saisir la commande de la commande GCC, qui affiche les informations que le compilateur GCC de la version 11.2.0 a été installé.

Avant de travailler sur les extraits du code C, vous devez maintenir et mettre à jour votre système. La raison de sa mise à jour est de répondre aux prochains problèmes liés aux dernières versions de Linux. Alors, essayez la requête «Mise à jour» ci-dessous et mettez votre Linux à jour.

Exemple 1

Commençons par le programme le plus simple et le plus facile, dans lequel nous n'utilisons qu'une seule méthode de fourche et une déclaration d'impression simple. Les programmes nécessitaient des fichiers d'en-tête répertoriés dans les trois premières lignes du code. La méthode Fork () est appelée dans la ligne d'ouverture de la méthode principale. La commande de fourche crée un processus d'enfant qui exécute simultanément l'instruction ci-dessous. En conséquence, l'instruction IMPRIMERA sera deux fois sur l'écran du shell lorsque le programme commencera à s'exécuter. Commençons à écrire la commande dans l'environnement d'Ubuntu. Nous devons créer le fichier à l'aide de Nano Editor, mais vous pouvez utiliser votre choix. Tapez la commande ci-dessous pour créer le nouveau fichier:

nano.c

Lorsque l'éditeur ouvre un fichier en mode d'édition, il est vide, nous devons donc y entrer le code avant de fermer le fichier et de l'enregistrer. La commande de fourche doit être précédée d'une déclaration indiquant que le processus de l'enfant sera démarré après cette commande. Après la fourche, la déclaration d'impression sera exécutée deux fois, une fois par le processus parent, puis par le processus d'enfant nouvellement établi. Cette déclaration ne sera exécutée qu'une seule fois.

#inclure
#inclure
#inclure
int main()
printf ("avant la méthode de la fourchette.\ n ");
fourchette();
printf ("Processus enfant créé.\ n ");
retour 0;

Après avoir sauvé et fermé la fourchette.Fichier C, nous devons maintenant utiliser le compilateur GCC pour compiler le fichier C et créer le fichier de sortie à l'aide de la commande ci-dessous.

GCC Forkthread.C -o Forkthread.dehors

Le fichier C sera compilé par le compilateur GCC, et les résultats seront enregistrés sur la forkthread.dépose. Cependant, si vous n'utilisez pas le Flag -O, le compilateur GCC stockera la sortie à l'A a.Fichier out, qui est son nom par défaut, après compilation. L'image montre comment nous pouvons compiler le fichier C en utilisant la commande ci-dessus.

Les résultats de la compilation révèlent qu'il n'y avait pas d'erreurs de syntaxe ou de sémantique dans notre code, prouvant qu'il avait été compilé avec succès et que le fichier de sortie avait été généré avec succès. Vous pouvez afficher les résultats maintenant que le fichier de sortie a été exécuté. Tapez simplement la courte commande ci-dessous pour accomplir ceci:

./ Forkthread.dehors

Exemple 2

Dans cet exemple, nous allons compter les cas où un morceau de code qui contient de nombreuses lignes Fork () est exécuté. Nous devons écrire de nombreuses méthodes de fourche et modifier le code existant. Vous devez savoir que le nombre de fois qu'un morceau de code est exécuté dépend de la puissance de 2, le nombre de fois que l'instruction Fork a été écrite. Par exemple, si l'instruction Fork a été écrite trois fois, le code sera exécuté 2 ^ 3 = 8 fois. Vous trouverez ci-dessous l'extrait du code C mis à jour pour un appel système de fourchette.

#inclure
#inclure
#inclure
int main()
printf ("avant la méthode de la fourchette.\ n ");
int i = 0;
fourchette();
fourchette();
fourchette();
printf ("Processus enfant créé: [% d] \ n", i);
i ++;
retour 0;

Dans le code ci-dessus, il y a trois instructions de fourche, et avant eux, nous avons déclaré une variable «i» du type entier qui sera utilisé pour suivre le processus que chaque instruction Fork crée. Cette variable sera également incrémentée après chaque instruction Fork et avant l'instruction RETOUR. Depuis que le code a été modifié, recompions-le en utilisant le compilateur GCC. Le fichier de sortie est généré avec succès.

Comme vous pouvez le voir, la variable «i» n'a été augmentée en aucun cas car l'instruction Fork est immédiatement suivie d'une déclaration d'impression qui imprime huit fois, ce qui signifie que chaque instruction Fork contient un processus qui exécute le code susmentionné simultanément et utilise uniquement Une copie du programme, empêchant toute augmentation de se dérouler dans le code. Il y a un total de huit méthodes d'impression distinctes utilisées pour imprimer le message ci-dessous. Comme vous pouvez le voir, il n'y a pas d'incrément. Parce que le processus d'enfant exécute une seule commande d'impression.

Conclusion

Il s'agissait d'utiliser l'appel du système C «Fork». Nous avons essayé différentes illustrations pour obtenir différentes sorties, et différentes méthodes ont été utilisées. Si vous souhaitez obtenir une prise en charge complète sur l'appel du système «Fork», essayez d'implémenter les deux exemples ci-dessus de diverses manières de votre côté, et vous êtes prêt à partir.