Как использовать execl в качестве замены для системы

int main(void)
{
execl("echo", "test");
return 0;
}

Я хочу выполнить команду echo test с execl
Зачем ? Потому что я не могу использовать system() у меня есть несколько причин
Что случилось ?

0

Решение

execl Функция не ищет команды в вашем PATH, как это делает оболочка, поэтому вам нужно указать полный путь к echo (или, по-моему, укажите относительный путь из вашего текущего рабочего каталога). Кроме того, первый аргумент в списке аргументов должен быть именем исполняемого файла, а последний аргумент должен быть NULL так что execl может выяснить, сколько аргументов вы пытаетесь передать.

Это работает для меня:

#include <unistd.h>

int main(void)
{
execl("/bin/echo", "/bin/echo", "test", NULL);
return 0;
}

Вы можете запустить which echo узнать где echo находится в вашей системе; это может отличаться от моего, и вам придется редактировать код.

3

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

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

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