Je veux écrire un interprète de ligne comamnd avec plusieurs commandes par ligne.interpréteur de ligne de commande avec plusieurs commandes par ligne
J'ai écrit un programme en C qui fonctionne pour 1 comamnd par ligne mais si j'entre plus de commandes ne fonctionnent pas, les comamnds sont entrées comme: ls -l; pwd; fichier de chat; ls.
d'abord, je parse args, je les mettre en réseau et le i cette fonction:
pid_t pid;
pid = fork();
switch(pid) {
case -1:
printf("DEBUG:Fork Failure\n");
exit(-1);
case 0:
execvp(cmd[j], cmd);
if(execvp(cmd[j], cmd) == -1) {
printf("Command Not Found\n");
exit(0);
}
default:
wait(NULL);
printf("DEBUG:Child Finished\n");
}
Mon analyseur est:
printf("shell> ");
fgets (input, MAX_SIZE, stdin);
if ((strlen(input)>0) && (input[strlen (input) - 1] == '\n')) {
input[strlen (input) - 1] = '\0';
}
printf("INPUT: %s\n", input);
cnd = strtok(input, " ;");
int i = 0;
while(cnd != NULL) {
cmd[i] = cnd;
i++;
cnd = strtok(NULL, ";");
Je pense que je dois utiliser des tuyaux pour résoudre mon problème ,mais comment ? Des idées?
désolé pour mauvais anglais
Si une commande est correctement analysée, mais que plusieurs commandes ne le sont pas, il y a un problème avec votre analyseur. Vous ne montrez pas votre analyseur ... – StoryTeller