Bonjour,
J'ai codé un script qui me permet d’exécuter plusieurs commandes à la suite.
Voici mon code :
Voici un exemple d’exécution :
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
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; }
J'aimerais le modifier de sorte qu'il s’arrête si une commande est fausse, actuellement ce qu'il fait est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ ./test 'echo foo' 'echo false' foo 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ ./test 'ech foo' 'echo false' sh: 1: ech: not found false $
Est-ce que quelqu'un voudrait bien m'aider ?
Partager