Execvp только правильно запускает первую команду

Я делаю простую оболочку, используя fork а также execvp, Когда я запускаю свою программу и набираю такую ​​команду, как ls или же ls -l это работает так, как мне нравится. Когда это будет сделано, моя программа будет сидеть в ожидании другой команды, но когда я введу другую действительную команду или даже введу ту же команду. execvp говорит ls: cannot access 'ls': no such file or directory, Я не знаю, почему это происходит. Я получаю те же результаты при повторном запуске программы.
Вот мой код Я не могу скопировать его через свою виртуальную машину, поэтому я сфотографировал его (если кто-то захочет отредактировать форматирование этого, это было бы здорово. Я попытался посмотреть на помощь)

http://imgur.com/a/6ZhKP

-4

Решение

Проблема в вашем коде заключается в том, что вы не сбрасываете счетчик аргументов в 0 между запусками команд.

int tokenIndex=0;
do {

должно быть

int tokenIndex;
do {
tokenIndex=0;

Первый раз это работает, но второй раз вы проходите ls как аргумент ls отсюда сообщение

(попробуйте ввести ls ls в оболочке вы получите точно такое же сообщение).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector