Моя программа работает, когда я использую execlp("ls", "ls", "-al", NULL)
, но он не работает, когда я execlp("{", "{", "ls", "-al", "}", NULL)
Как использовать фигурные скобки с execlp()?
Есть ли способ использовать брекеты с execlp()
?
Моя программа работает, когда я использую execlp("ls", "ls", "-al", NULL)
, но он не работает, когда я execlp("{", "{", "ls", "-al", "}", NULL)
Как использовать фигурные скобки с execlp()?
Есть ли способ использовать брекеты с execlp()
?
В принципе, ответ отрицательный.
execlp("{", "{", "ls", "-al", "}", NULL)
Вы пытаетесь выполнить команду с именем {
. {
не является командой; это часть синтаксиса оболочки, а execlp
(в отличие от system
) не выполняет свою команду через оболочку. Имя команды должно быть фактическим исполняемым файлом (двоичным или shell-скриптом).
Если вы действительно этого хотите, вы можете вызвать команду /bin/sh
в качестве команды и передать аргументы командной строки, которые она выполнит. Например (я не проверял это):
execlp("/bin/sh", "/bin/sh", "-c", "{ ls -al; }", NULL);
Обратите внимание, что вся команда является одной строкой, /bin/sh
трактует аргумент к опции -c
. (Сама оболочка разделит ее на слова.)
oopsie предназначено для фигурных скобок. – user3023154
Это сработало. Благодаря! – user3023154
Обратите внимание, что в этом контексте брекеты не приносят никакой пользы. В сценарии оболочки они предоставляют единицу для перенаправления ввода-вывода, но встроенный сценарий оболочки здесь не содержит перенаправления ввода-вывода. –