Récupérer valeur sortie exec
Bonjour,
J'ai codé un script qui me permet d’exécuter plusieurs commandes à la suite.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
# include <stdio.h>
# include <unistd.h>
# include <sys/wait.h>
# include <stdlib.h>
# include <string.h>
# include <assert.h>
int parse( char * arg)
{
int t;
t = fork();
if (t < 0)
return -1;
if (t == 0)
{
execl("/bin/sh", "sh", "-c", arg,NULL);
exit(1);
}
return t;
}
int main(int argc, char *argv[])
{
int t, tt, status, i;
i = 1;
for (i=1; i < argc; i++)
{
t = parse(argv[i]);
tt = wait(&status);
assert(tt == t);
}
return 0;
} |
Voici un exemple d’exécution :
Code:
1 2 3 4 5
|
$ ./test 'echo foo' 'echo false'
foo
false
$ |
J'aimerais le modifier de sorte qu'il s’arrête si une commande est fausse, actuellement ce qu'il fait est :
Code:
1 2 3 4 5
|
$ ./test 'ech foo' 'echo false'
sh: 1: ech: not found
false
$ |
Je crois savoir que je dois faire un fork avec l'exec dans l'enfant et récupérer la valeur de sortie de l'exec mais je n'y arrive pas.
Est-ce que quelqu'un voudrait bien m'aider ?