2014-11-06 1 views

ответ

2

В принципе, ответ отрицательный.

execlp("{", "{", "ls", "-al", "}", NULL) 

Вы пытаетесь выполнить команду с именем {. { не является командой; это часть синтаксиса оболочки, а execlp (в отличие от system) не выполняет свою команду через оболочку. Имя команды должно быть фактическим исполняемым файлом (двоичным или shell-скриптом).

Если вы действительно этого хотите, вы можете вызвать команду /bin/sh в качестве команды и передать аргументы командной строки, которые она выполнит. Например (я не проверял это):

execlp("/bin/sh", "/bin/sh", "-c", "{ ls -al; }", NULL); 

Обратите внимание, что вся команда является одной строкой, /bin/sh трактует аргумент к опции -c. (Сама оболочка разделит ее на слова.)

+0

oopsie предназначено для фигурных скобок. – user3023154

+0

Это сработало. Благодаря! – user3023154

+0

Обратите внимание, что в этом контексте брекеты не приносят никакой пользы. В сценарии оболочки они предоставляют единицу для перенаправления ввода-вывода, но встроенный сценарий оболочки здесь не содержит перенаправления ввода-вывода. –

 Смежные вопросы

  • Нет связанных вопросов^_^