bonjour, on a fait des TP sur le fork(), mais j'ai du mal à comprendre dans quel ordre se passe l'exécution :
void exo1(){
int retour ;
int pid=fork() ;
if(pid!=0){
printf("Pere >> PID Pere : %d | PID fils : %d\n", getpid(), pid) ;
if(wait(&retour)==-1){
perror("\nErreur : pas de fils") ;
}
if(WIFEXITED(retour)!=0){
printf("Fin normale\n") ;
}
}
else{
printf("\nFils >> PID fils %d", getpid()) ;
sleep(5) ;
printf("\nFils >> Terminaison normale du fils\n") ;
}
}
======>
Pere >> PID Pere : 7849 | PID fils : 7850
Fils >> PID fils 7850
Fils >> Terminaison normale du fils
Fin normale
---------------------------------------------
exo(){
int retour ;
int pid=fork() ;
if(pid!=0){
printf("Pere >> PID Pere : %d | PID fils %d\n",getpid(), pid) ;
if(kill(pid,SIGKILL)==-1)
perror("erreur") ;
else
printf("Pere >> fils tué !\n") ;
if (wait(&retour)==-1)
perror("Pas de fils pour le wait\n") ;
if(WIFEXITED(retour)!=0)
printf("fin normale\n");
}
else{
printf("Fils >> PID fils : %d\n",getpid());
sleep(5);
printf("Fils >> Terminaison normale du fils\n");
}
}
======>
Fils >> PID fils : 7897
Pere >> PID Pere : 7896 | PID fils 7897
Pere >> fils tué !
-------------------------------------
déjà je vois pas pourquoi dans le premier exemple il affiche en premier :
Pere >> PID Pere : 7849 | PID fils : 7850
et dans le deuxième exemple il affiche en premier :
Fils >> PID fils : 7897
merci d'avance