Création de dossier et de fichier sous linux en C
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 :
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
|
#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);
} |
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".
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