Je crois que cela crée 24 processus; Cependant, j'ai besoin d'une vérification. Ces questions m'étouffent souvent. Merci pour l'aide!
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
pid_t pid = fork();
pid = fork();
pid = fork();
if (pid == 0)
{
fork();
}
fork();
return 0;
}
Il est assez facile de raisonner à travers cela. L'appel fork
crée un processus supplémentaire chaque fois qu'il est exécuté. L'appel renvoie 0
dans le nouveau processus (enfant) et l'ID de processus de l'enfant (pas zéro) dans le processus d'origine (parent).
pid_t pid = fork(); // fork #1
pid = fork(); // fork #2
pid = fork(); // fork #3
if (pid == 0)
{
fork(); // fork #4
}
fork(); // fork #5
pid==0
et la moitié ont pid != 0
Calculer ainsi:
Commencez par 1 (Processus principal) et indiquez-le deux fois pour chaque fork si fork n'est pas à l'intérieur si (pid == 0), sinon ajoutez 1/2 du processus en cours au nombre actuel de processus.
Dans votre code: 1PGot # 1 fork () donc doublez le nombre actuel de processus. Maintenant nouveau numéro de processus 2P
Got # 2 fork () donc double le nombre actuel de processus. Maintenant nouveau numéro de processus 4P
Got # 3 fork () donc double le nombre actuel de processus. Maintenant nouveau numéro de processus 8P
Vous avez obtenu la fourche n ° 4 (), mais attendez que la condition soit correcte (8 + 4 = 12) P
Got # 5 fork () donc double le nombre actuel de processus. Maintenant, nouveau numéro de processus 24P
Vous avez raison. Il est juste 24. Il vient d'être compilé et exécuté avec printf avant la déclaration de retour finale. Vous avez 24 lignes de sortie.
Cette instruction a plus de 24 processus enfants . Chaque appel de fork () entraîne deux processus, l'enfant et le parent. Ainsi, le premier fork aboutit à deux processus. Le second fork () est atteint par ces deux processus, ce qui donne quatre processus. Le dernier fork () est atteint par ces quatre, ce qui permet huit processus supplémentaires. Tous les processus sauf un (le processus original) est un enfant d'au moins une des fourchettes.