Как использовать 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 находится в вашей системе; это может отличаться от моего, и вам придется редактировать код.

Другие вопросы по тегам