J'essaie d'avoir un programme qui utilise plusieurs fourchettes.
J'ai utilisé cet exemple pour me faire commencer Multiple fork() ConcurrencyExemple d'une fourchette multiple en C
il fonctionne parfaitement comme il est. Toutefois, lorsque j'essaie d'ajouter une instruction d'impression dans l'enfant comme ceci:
if ((p = fork()) == 0) {
// Child process: do your work here
printf("child %i\n", ii);
exit(0);
}
Le processus ne se termine jamais. Comment puis-je faire des choses dans l'enfant et amener le parent à terminer l'exécution du programme?
ce qui arrive à vos processus? Voyez-vous une sortie? –
Vous devez montrer plus de code que vous avez; le problème n'est pas dans ce que vous nous montrez. On ne sait pas très bien à quoi sert "ii". Vous pouvez envisager d'utiliser 'getpid()' pour imprimer l'ID du processus. (Je peux imaginer des façons dont 'ii' n'est pas incrémenté dans le processus parent si nécessaire, par exemple.) –
N'appelez pas' exit' dans l'enfant. Utilisez '_exit'. Sinon, l'enfant peut vider et nettoyer les ressources qui sont encore utilisées dans le parent. Cela peut, par exemple, modifier la position actuelle des descripteurs de fichiers utilisés par le parent, ce qui peut entraîner une corruption des données. –