Как использовать execl в качестве замены для системы
int main(void)
{
execl("echo", "test");
return 0;
}
Я хочу выполнить команду echo test с execl
Зачем? Потому что я не могу использовать system()
У меня есть несколько причин Что не так?
1 ответ
Решение
execl
Функция не ищет команды в вашем PATH, как это делает оболочка, поэтому вам нужно указать полный путь к echo
(или, по-моему, укажите относительный путь из вашего текущего рабочего каталога). Кроме того, первый аргумент в списке аргументов должен быть именем исполняемого файла, а последний аргумент должен быть NULL
так что execl может выяснить, сколько аргументов вы пытаетесь передать.
Это работает для меня:
#include <unistd.h>
int main(void)
{
execl("/bin/echo", "/bin/echo", "test", NULL);
return 0;
}
Вы можете запустить which echo
узнать где echo
находится в вашей системе; это может отличаться от моего, и вам придется редактировать код.