|
Titre: Besoin d'aide en C: fork, printf Posté par: anarcho-hippy-punk le 02 Septembre 2011 à 05:14:13 Bonjour à tous!
J'apprends le C ces temps (pour l'école {ça vous rappelle quelque chose, fork, exec et Cie =)?}), et je tombe sur un os. Voilà mon programme: Code: #include <stdio.h> Et voilà le résultat:#include <stdlib.h> #include <unistd.h> int main() { pid_t pid; int i; for (i=0;i<10;i++) { pid = fork(); if (pid > 0) printf("parent %d\n", i); if (pid < 0) printf("error forking\n"); else { printf("child %d\n", i); exit(0); } } return 0; } Code: parent 0 child 0 child 0 Je vous laisse deviner pourquoi ça me plait pas du tout.. J'ai eu d'autres bizarreries du genre. Quelqu'un peut-il m'expliquer, svp? Titre: Re : Besoin d'aide en C: fork, printf Posté par: Ge0 le 02 Septembre 2011 à 21:16:28 Et si t'affichais le contenu de la variable pid au lieu de i ?
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/fork.2.html "En cas de succès, le PID du fils est renvoyé au processus parent." Donc par instinct : Code: pid_t pid = fork(); if(pid) { printf("Je suis le pere, mon pid est %d et celui de mon fils est %d.\n", getpid(), pid); } else { printf("Je suis le fils, mon pid est %d.\n", getpid()); } N'ayant fait que trop peu de programmation système sous Linux, je ne peux t'affirmer ce que j'avance. Titre: Re : Besoin d'aide en C: fork, printf Posté par: harvey le 03 Septembre 2011 à 01:00:55 Citation Code: if (pid > 0) printf("parent %d\n", i); if (pid < 0) printf("error forking\n"); else { printf("child %d\n", i); exit(0); Titre: Re : Besoin d'aide en C: fork, printf Posté par: anarcho-hippy-punk le 05 Septembre 2011 à 16:55:04 waw... merci
Je crois que je vais aller me cacher pendant un moment :rolleyes: |