Небольшой контекст для моего проекта: у нас есть произвольное количество файлов, для которых требуется отдельный процесс для каждого файла, затем нужно искать с помощью вызова exec() для поиска каждый раз, когда используется конкретный ключ , Я знаю, как использовать Grep из командной строки с помощью следующей команды:Использование grep с execl()
grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt
Но я не могу понять, как сделать это в C++. Я нашел здесь нить, которая дала мне эту строку.
execl("/bin/grep","grep",pattern,filename,NULL);
Он собирает и работает, так что я думаю, что это работает, но проблема в том, мне нужно вывести число раз картина происходивших в файл, и я попробовал строку ниже, но ожидаемо это не сработало. Он не дал эту ошибку «Grep: out.txt: Нет такого файла или каталога»
execl("/bin/grep", "grep",pattern,fileName,output,NULL);
Ниже приведены направления этой части моего проекта.
Вы можете сделать это с помощью вызова Exec системы(), снабдив его путь к исполняемому файлу оболочки (как правило,/бен/ш) и, в качестве аргументов/бен/ш , строка -c и строка, соответствующая команде поиска (grep -o ...).
Некоторые рекомендации здесь будут высоко оценены!
http://stackoverflow.com/questions/20488574/output-redirection-using-fork-and-execl –
Вы представляете свой выходной файл в качестве входного файла. Вы хотите перенаправить вывод grep. Вы должны прочитать ссылку выше, чтобы посмотреть, как это сделать. –
Таким образом, ваш проект * специально упоминает *, что вы * не * выполняете 'grep' напрямую. И что ты делаешь? Вы выполняете 'grep' напрямую. И когда это не работает, все еще вместо того, чтобы читать указания вашего проекта, вы спрашиваете здесь. Пожалуйста, ознакомьтесь с указаниями вашего проекта. – hvd