Codage avec Fork et Exec par l'exemple en C

Codage avec Fork et Exec par l'exemple en C
Le titre de notre article contient deux fonctions différentes du langage C qui se produisent lors de l'exécution de n'importe quel programme dans notre système. Malheureusement, il n'y a aucune possibilité de se produire plus d'un programme à la fois en C. Une seule tâche peut se produire à un moment particulier, ce qui signifie qu'il ne permet pas aux programmes simultanés de s'exécuter. Cela vous fait attendre l'achèvement d'un processus pour exécuter l'autre. Pour éviter ce problème de dépannage, vous devrez peut-être développer votre programme dans le bon sens, étant un bon développeur. Linux Fork () est utilisé pour surmonter l'attente et pour permettre la concurrence dans votre système. Il aide à dupliquer un nouveau processus et en crée un nouveau en appelant le processus dupliqué. Le nouveau processus est le processus enfant, et le précédent est appelé le processus parent.

Tandis que la fonction exec () est utilisée pour modifier le programme existant actuel avec le nouveau. Ce remplacement est effectué en apportant des modifications au contenu d'un programme ou d'un fichier. La dissimilarité entre Fork et Exec est donc que Fork crée un nouveau processus à partir du processus existant, et Exec est utilisé pour remplacer le programme existant en créant un nouveau.

Conditions préalables

Pour exécuter n'importe quel programme C sur votre système Linux, nous devons installer des conditions préalables dessus. Accédez au terminal en utilisant la méthode de raccourci Ctrl + Alt + T. Maintenant, écrivez les commandes suivantes pour installer les pages de l'homme.

$ sudo apt install manpages-dev

Il installera toutes les pages correspondantes.

À l'avenir, pour exécuter un programme sur Linux, vous devez installer un compilateur de code. Qui est utilisé pour compiler le code et l'exécuter. À cette fin, nous installerons des référentiels GCC dans notre système.

$ sudo apt install gcc

Codage avec exec en c

Comme nous avons installé les pages de l'homme dans Linux, nous utiliserons la commande suivante pour voir la description concernant l'exec. La syntaxe de l'échantillon primaire est la suivante:

Syntaxe

Exec (pathname / fichier, argv);

Ici, nous avons utilisé le «Unistd.En-tête h ”car il contient toutes les informations des familles de la fonction exec.

$ man exec

Maintenant, dans l'image ci-dessus, vous pouvez observer les types d'exécutif. Ce sont la famille des fonctions Exec. Chacun est pour une fonction différente suivant la même base, «Exec."

Exemple: Maintenant, en évoluant plus loin, nous décrirons la fonctionnalité de l'exec à l'aide d'un exemple. Nous prendrons une fonction d'EXEC pour démontrer son fonctionnement, qui est «EXECV."Premièrement, nous créerons deux fichiers avec l'extension de".c."Après leur création, nous allons écrire des codes respectifs et les exécuter pour voir le résultat.

Considérez un nom de fichier «Exemple4.C ". Veuillez l'ouvrir et utiliser le code suivant. Dans ce code, nous avons utilisé execv d'une manière particulière citée ci-dessous.

Execv ("./ échantillon4copy », args);

La première partie contient le nouveau chemin de répertoire, et la deuxième partie montre le tableau des arguments en tant que paramètre que nous avons passé.

Échantillon4.c

Tout d'abord, nous avons imprimé l'ID du processus actuel. Deuxièmement, nous avons créé un tableau de caractères ayant null à la fin pour la résiliation. Troisièmement, nous avons appelé la fonction Sample4Copy.

Échantillon 4copie.c

Lorsque nous appelons la fonction exec (), l'image de processus est modifiée. Ci-dessous l'image citée ci-dessous montre le code de Sample4Copy.c.

Ici, nous n'avons utilisé que des instructions d'impression pour obtenir l'ID du processus actuel.

La sortie des codes respectives peut être obtenue en utilisant les commandes suivantes.

$ Gcc-o échantillon4 échantillon4.c
$ Gcc -o échantillon4copie échantillon4copie.c
$ ./ échantillon4

Comme nous l'avons décrit précédemment, le mot «gcc» est utilisé pour compiler le code, et après compilation, le code est exécuté avec succès.

Selon l'image, le pid de l'échantillon4.Le fichier C est affiché d'abord tel qu'il a été déclaré avant l'appel Exec. Ensuite, une fois la fonction EXEC ().C est exécuté lorsque getPid () est utilisé pour obtenir l'ID du processus.

Codage avec une fourche en c

La fonction Fork () crée le processus enfant à partir du processus parent. Il contient également deux en-têtes, y compris les informations de la fourche.

Syntaxe:

PID_T Fork (void);

Nous pouvons utiliser la page de l'homme pour obtenir de l'aide dans l'utilisation

$ man

Exemple: Considérez maintenant un exemple en créant un fichier «Exemple3.C ". Nous allons entrer le code dans le fichier. Selon le code, nous avons défini le statut de fourche en tant que fourchette.

Échantillon3.c

Nous avons utilisé la déclaration «if-else» pour appliquer la condition. Des commandes d'impression simples sont déclarées ici pour aider à comprendre le concept Fork (). Forkrank est d'abord déclaré 0 puis -1. Avec une fourche (), il y a maintenant deux processus qui fonctionnent simultanément. La sortie peut être obtenue en utilisant le même code, comme utilisé ci-dessus dans l'exemple Exec.

$ Gcc -o échantillon3.c
$./ échantillon3

La sortie montre que le processus enfant est exécuté plus tôt que le parent lorsque le processus parent attendait. La fonction d'attente implique qu'il fait attendre la fonction parent.

Les appels du système Fork et Exec

Ici, nous prendrons deux fichiers nommés «Sample1.C ”et« Exemple2.C ". Tout d'abord, ouvrez le fichier SAMPL1.C et écrivez le code qui est ajouté ci-dessous dans l'image. Nous avons utilisé le système Fork () ici; Lorsque le processus de l'enfant sera créé, P sera affecté avec 0. Tout en utilisant un système de système exec, l'échantillon1.C sera remplacé par un échantillon2.c.

Échantillon 1.c

Échantillon2.c

Semblable aux exemples discutés ci-dessus, le fichier Sample2 contiendra les instructions printf dedans. Dans Sample1.C, la première commande d'impression est d'abord exécutée, puis la fonction de fourche est appelée, lorsque p == 0, alors la partie enfant est exécutée et échantillon2.Le fichier C sera exécuté. La sortie contiendra GCC pour compiler les deux fichiers. Ici un exemple de parent1.C ID et échantillon2.C ID est différent car ils sont parents et enfants.

Conclusion

Dans cet article, nous avons utilisé à la fois Fork et Exec séparément et collectivement pour comprendre facilement l'utilisation et le concept. J'espère que ce tutoriel contient un contenu suffisant qui mènera à l'accès dans l'escalade de vos connaissances.