Аргумент path
для execv
должен быть спецификацией пути к исполняемому файлу, который вы хотите запустить, а не только к каталогу, возвращаемому getcwd
. Из справочной системы:
Начальный аргумент для этих функций - это путь к файлу, который должен быть выполнен.
Другими словами, вы ищете что-то вроде:
execv ("/bin/echo", command);
Код, который вы в настоящее время пытается запустить свой текущий каталог, то, что вряд ли хорошо закончится, и что-то вы, возможно, заметил, если вы проверили возвращаемое значение из execv
вместе с errno
: подталкивать, подталкивать, подмигивание, подмигивание :-)
в плане того, что делать для других программ, вы просто заменить их полное имя для /bin/echo
.
Вы также должны знать, что exec
- это номер family of functions, каждый из которых имеет небольшие вариации.
Некоторые позволяют передавать среды, некоторые из них автоматически ищут путь для вашего исполняемого файла (в зависимости от указанного имени), а некоторые используют списки переменных аргументов, а не массивы. Если вы хотите использовать автоматический поиск путей, вы бы просмотрели execvp
, а не execv
, тогда вам не нужно беспокоиться о том, где находится исполняемый файл.
Ok ... в то время я читал о том, что execvp может использовать команды PATH ... Здесь эхо было всего лишь примером .. в будущем я хочу, чтобы он делал больше, чем просто эхо .. так что делать там ? –
ok Я нашел решение здесь http://stackoverflow.com/questions/9269927/c-using-execvp-with-user-input –