Vérification code de retour
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 :
Code:
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);
}
} |
Ensuite lorsque je désire vérifier ce code de retour, j'utilise :
Code:
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;
} |
Le problème que je rencontre c'est qu'il tombe toujours dans le dernier cas (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