Appel système de dérivation: L’appel système fork est utilisé pour créer un nouveau processus, appelé le processus enfant, qui s’exécute en même temps que le processus qui effectue l’appel fork() (processus parent). Après la création d’un nouveau processus enfant, les deux processus exécuteront l’instruction suivante après l’appel système fork(). Un processus enfant utilise le même compteur de programme, les mêmes registres CPU, les mêmes fichiers ouverts qui sont utilisés dans le processus parent.
Pour créer un éventail ou une chaîne de processus, insérez d’abord le fichier d’en-tête « unistd.h » pour utiliser la fonction fork() pour créer le processus. Pour utiliser la méthode exit(), incluez « stdlib.h » et il y a 3 façons d’utiliser l’instruction de sortie dans le programme :
- sortie(0) : Pour la résiliation normale
- sortie(1) : Pour résiliation anormale
- sortir(): Cela peut être normal et anormal.
Table des matières
Chaîne de processus :
Supposons qu’il y ait trois processus et que le premier processus soit le processus parent et qu’il crée le processus enfant, alors ce deuxième processus crée un autre processus (troisième processus), puis le premier processus devient le parent du deuxième et le deuxième processus devient le parent du troisième processus. Ainsi, une chaîne de processus est obtenue, et c’est ce qu’on appelle une chaîne de processus.
Vous trouverez ci-dessous l’implémentation pour créer une chaîne de processus à l’aide du fork() :
C
#include #include #include #include #include int main() { int pid; pour (int i = 0; i < 3; i++) { pid = fourche(); si (pid > 0) { printf(« L’ID du processus parent est %dn », getpid()); Pause; } autre { printf(« L’ID du processus enfant est %dn », getpid()); } } renvoie 0 ; } |
Sortir
L’ID du processus parent est 1359 L’ID du processus enfant est 1360 L’ID du processus parent est 1360 L’ID du processus enfant est 1360 L’ID du processus enfant est 1361 L’ID du processus parent est 1361 L’ID du processus enfant est 1360 L’ID du processus enfant est 1361 L’ID du processus enfant est 1362
Explication: Dans le programme ci-dessus, getpid() est utilisé pour obtenir l’ID du processus. Alternativement, getppid() peut également être utilisé pour obtenir un ID de processus parent. Chaque fois que le programme est exécuté, la sortie est différente, car pas à chaque fois le même identifiant de processus est alloué au processus par le système d’exploitation, mais le PID(process id) est toujours obtenu dans l’ordre non décroissant à chaque exécution du programme.
Fan de processus:
Supposons qu’il y ait trois processus, et que le premier processus soit le processus parent, et qu’il crée deux processus enfants. Si les deux processus ont le même parent, alors c’est un fan de processus.
Vous trouverez ci-dessous l’implémentation pour créer un éventail de processus à l’aide de fork() :
C
#include #include #include #include int main() { pour (int i = 0; i < 3; i++) { if (fork() == 0) { printf(« pid enfant %d du » » pid parent %dn », getpid(), getppid()); sortie(0); } } pour (int i = 0; i < 3; i++) attendre(NULL); } |
Sortirpid enfant 29831 du pid parent 29830 pid enfant 29832 du pid parent 29830 pid enfant 29833 du pid parent 29830
Explication: Dans le programme ci-dessus, à chaque fois le même ID de processus n’est pas alloué à chaque fois au traitement par le système d’exploitation. Cela signifie que dans ce cas, la sortie est également différente à chaque exécution du programme, mais les processus enfants créés auront le même ID de processus parent.
Vous voulez apprendre des meilleures vidéos organisées et des problèmes de pratique, consultez le Cours de base C pour Basic à Advanced C.