Je crée un shell simple en utilisant les fork
et execvp
. Quand je cours mon programme et je tape dans une commande comme ls
ou ls -l
cela fonctionne juste comment je l'aime. Quand cela est fait, mon programme est assis là en attendant une autre commande, mais quand je mets une autre commande valide ou même en mettant la même commande. execvp
dit ls: cannot access 'ls': no such file or directory
. Je ne sais pas pourquoi cela arrive. J'obtiens les mêmes résultats en relançant le programme. Voici mon code. Je ne peux pas le copier dans ma machine virtuelle, donc je pris une photo. (Si quelqu'un voudrait modifier le formattage sur ce qui serait génial. J'ai essayé de regarder l'aide)Execvp Exécute uniquement la première commande correctement
-4
A
Répondre
1
Le problème dans votre code est que vous ne réinitialisez pas le compteur d'argument à 0 entre les lancements de commande.
int tokenIndex=0;
do {
devrait être
int tokenIndex;
do {
tokenIndex=0;
La première fois que cela fonctionne, mais la deuxième fois que vous passez ls
comme argument de ls
où le message
(essayez de taper ls ls
dans un shell que vous aurez obtenez exactement le même message).
Nous avons besoin de voir du code pour pouvoir vous aider. Veuillez fournir un [exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) – Riley
@Riley Désolé, j'ai appuyé sur Entrée pendant que je mettais des balises. Je n'arrive pas à faire apparaître l'image correctement, donc j'ai dû mettre un lien imgur car mon code ne serait pas copié via un vm. – DrakeJacks
Ne postez pas d'images de texte! – Olaf