Bonjour à tous,
Etudiant en informatique, il m'est demandé de créer un shell en C qui execute toujours la même commande quelque soit ce que l'utilisateur écrive (et exit lorsque l'utilisateur rentre "exit").
J'ai réussi à le faire pour des commandes simples tel que "mkdir", "ls", etc dont voici le code :
Le problème, c'est qu'il m'est demandé de faire cela pour la commande "mkdir brol && (cd brol;>f)" . Lorsque j'utilise cette commande, le programme crée 3 dossiers "&&", "brol;>f", "brol", et "(cd".
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 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main () { int i; char *ligne; char *tokens[100]; char *cmd; char *commande = "mkdir brol"; ligne=(char*)malloc(300); printf("$ "); fgets(ligne,256,stdin); while (strcmp(ligne,"exit\n")) { i=0; cmd = strdup(commande); tokens[i]=strtok(cmd, " \n"); while (tokens[i] != NULL) tokens[++i]=strtok(NULL," \n"); if (fork()==0) { execvp(tokens[0],tokens); printf("Commande invalide\n"); exit(1); } wait(0); free(cmd); printf("$ "); fgets(ligne,256,stdin); } exit(0); }
Comment faire pour que ce programme execute bien la commande "mkdir brol && (cd brol;>f)", c'est à dire, qu'elle crée un dossier "brol" et crée un fichier "f" dedans ?
Merci d'avance pour votre aide
Partager