Bonjour,
je rencontre un problème lors de la vérification du code de retour d'une exécution.
J'ai dans une fonction le code suivant :
Ensuite lorsque je désire vérifier ce code de retour, j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 if ((pid = fork( )) == 0) { .. execv("/bin/sh",argv); exit(127); } else { while (waitpid(pid, &retour, 0) < 0) //j'attends la fin du fils if (retour == 127) { printf("Erreur lors de l'execution du programme\n"); return (-1); } else { return (retour); } }
Le problème que je rencontre c'est qu'il tombe toujours dans le dernier cas (code =2).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 code_retour_exec = appel_a_ma_fonction(); if(WIFEXITED(code_retour_exec))//le programme s'est termine normalement { code = 0; } else if(WIFSIGNALED(code_retour_exec)) //le programme s'est termine a cause d'un signal { code = 1; } else if(WIFSTOPPED(code_retour_exec))//le programme s'est arrete a cause d'un signal { code = 2; }
Pourtant, dans mon exec de ma fonction, j'ai essayé d'exécuter un simple programme "Hello World!" en mettant à la fin exit(0)...et même ça ça arrive dans le dernier cas.
Je n'arrive pas à comprendre....
Merci pour l'aide
EDIT : c.f. poste ci-dessous
Partager