donc je vais tenter de résoudre un problème dans mon livre concernant l'appel système fork en C.programme fork() en C
Voici le code suivant:
#include <stdio.h>
#include <unistd.h>
int main() {
int i = 1;
if (fork()) //parent process will return PID of child.
i++;
else if (fork()) //child process (becomes parent)
i--;
else //grandchild process returns 0
i++;
printf("%d\n", i);
}
Après avoir traversé le code , J'ai 2 0 2 comme solution. Je suis confus cependant puisque je ne sais pas quel ordre est correct? Les processus enfants peuvent-ils être imprimés avant que le parent ne le fasse? Si oui, une autre solution viable pourrait être 0 2 2 ou 2 2 0. Comment savoir si toutes les instructions conditionnelles seront exécutées? Je sais que dans le premier conditionnel, l'instruction if
sera exécutée et sera le processus parent (qui retournera l'identifiant de processus de l'enfant, et la valeur de i sera incrémentée à 2). Comment saurais-je si le code else if
et else
sera exécuté? Désolé, je suis juste confus et j'essaie de m'en sortir parce que c'est un nouveau sujet pour moi.
Toute aide serait grandement appréciée. Merci d'avance.
Je suggère d'ajouter des commentaires au code pour préserver votre compréhension. Par exemple, dans le premier bloc 'if (fork())', vous pouvez ajouter un commentaire "la première fourchette renvoyée non nulle, c'est le parent". Et continuez tout au long du programme. –
Fait les modifications, toujours à la recherche d'une aide plus détaillée, merci. – Derek
Ce code a été posé à propos de, vraisemblablement par quelqu'un d'autre, au cours des deux dernières semaines. –