La hierarchie pere et fils [:(] !!!!!!!!!!!! HELP!!!!!!!!!!!

laetitia334 Messages postés 1 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 28 février 2004 - 28 févr. 2004 à 11:31
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 28 févr. 2004 à 13:09
bonjour a tous!
j'ai un probleme avec un programme! car je ne comprend pas les termes utilisés:

Main (){
int pid;
printf("je suis le processus initial \n\n");
pid= fork()
if(pid==-1) { printf("creration impossible");
exit(1);}
if(pid==0) { printf("je suis le processus dils n%d et j'ai un pere n %d",getpid,getppid());
exit(0);}
printf("je suis le processus pere n%d et j'ai un fils %d", getpid,pid();
exit(0);
}

Donc sur ce programme je ne comprends pas:
ce que represente pid (je sais que c une variable mais ne voit pas ce que ca represente)
fork: je ne voit pas ce qu'elle cree!
pid==-1 et ==0 : je ne comprend pas pourquoi on prend -1 et 0 ?
pourquoi on met exit (1) et exit (0) ? pourquoi changer de chiffre?
que signifie getpid,getppid(),pid()?

Ca serait super sympa de m'aider !!!
je pense que c tout simple, mais la je bug!!!
je ne comprend pas!
merci d'avance...

2 réponses

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
28 févr. 2004 à 12:32
Salut, tu programmes sous quelle architecture ?? Parce que ses fonctions sont des fonctions UNIX, tu dois êtres sous linux ou mac peut-être, fais un man fork pour avoir des info a propos de ces fonctions.

Sinon, fork créer un nouveau processus, la fonction retourne 0 quand on est dans le processus fils, retourne -1 en cas d'erreur.
getpid() retourne le pid (process ID) du processus courant.
getppid() retourn le pid du pere.
La fonction pid() n'existe pas, tu as du te tromper.
et enfin exit() sert a quitter le programme avec un code d'erreur, en général on met 0 pour indiquer que l'on quitte correctement le programme et une valeur positif qui indique un code d'erreur en cas d'arret du programme pour cause d'erreur.

Voila, si tu as d'autres questions n'hésites pas!!!
Bouba
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
28 févr. 2004 à 13:09
en fait fork ca copie l'etat processus en memoire, apres les 2 processus continue de s'executer en meme temps, c'est pour ca que tu fait

if(je suis dans le fils)
{
...
exit(0);
}

// je suis dans le pere
0
Rejoignez-nous