Как объединить команды с помощью execv? например. лс | grep -c выражение

я знаю, что могу сделать

execl("/bin/ls","-l",(char*)NULL)

вывести лс.

Но как мне выполнить

ls | grep -c "file"

используя execv? В моем коде я хочу искать в моем текущем рабочем каталоге определенное имя файла. Приведенная выше команда возвращает 1, если файл существует, и 0, если его нет. Я хочу выполнить эту команду из своей программы, используя execv. Как мне это сделать?

Я попытался

execl("/bin/ls", "| grep -c file"  ,(char*)NULL)

Но это не работает.

Кроме того, даже если я выполню эту команду, используя execl, она просто напечатает выходной номер в терминале. Как заставить его вернуться в программу?


person Nirvan Anjirbag    schedule 12.10.2019    source источник
comment
Возможный дубликат Pipes, dup2 и exec(). Также вы можете заглянуть в system(3).   -  person gstukelj    schedule 12.10.2019
comment
Этот код никогда не реализуется как один execv, если только вы не используете execv для вызова оболочки, которая устанавливает каналы, разветвления и вызывает отдельный execv для каждой стороны конвейера.   -  person Charles Duffy    schedule 12.10.2019