Bonsoir,
voici l'énoncé de l'exercice sur lequel je travaille :
Écrivez un programme C qui, par le biais de créations de processus et de recouvrements, exécute la suite de commandes who ; pwd ; ls -l
et voici ma réponse :
et voici ce qu'affiche le terminal :
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 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char **argv[]) { int i; printf("Affiche--"); char *myargs[]={"pwd","who","ls -l"}; char *myargs2[]= {NULL}; for(i=0; i<4; i++) { pid_t p=fork(); //creation de fils if (p<0) { perror("fork"); exit(1); } else if (p==0) //dans le fils { printf("%s",myargs[i]); execv(myargs[i],myargs2); perror("erreur exec"); exit(1); } } }
Mes questions sont alors :erreur exec: No such file or directory
Affiche--pwdAffiche--erreur exec: No such file or directory
Affiche--ls -lerreur exec: No such file or directory
Affiche--who
- pourquoi "Affiche--" apparait ? N'est-il pas sensé s'afficher qu'une fois (au début) et dans le père ?
- pourquoi les commandes sont executées dans le désordre ?
- Est-ce correct d'appeler en deuxième argument de execv, un tableau contenant NULL ? Car les commandes que l'on doit executer n'ont pas d'options...
Merci d'avance !![]()
Partager