2010-07-12 3 views
1

Я делаю файл IO с кодом c. У меня есть определенный шаблон в моем файле. Я могу проверить это командой оболочки cat abc.txt | grep abc | wc -l. Когда я выполняю ту же команду, используя System(), она дает правильный вывод, но я не знаю, как я могу получить свой вывод в переменной и сравнить ее в моем самом коде.Как читать выходные данные системы ('ls')?

Я пробовал искать справочные страницы, которые предлагают использовать WEXITSTATUS(). Это фактически возвращает статус выполнения, а не вывод.

F1 !!

+3

Обратите внимание, не разбирайте вывод 'ls'. И имейте в виду, что есть более эффективные варианты для IO файла, чем вызовы оболочки через 'system()'. – Stephen

+0

Что означает «F1»? – bk1e

ответ

7

Для этого не нужен system(3). Попробуйте popen(3) и друзей.

+0

+1 вот пример этого http://www.metalshell.com/source_code/23/Popen.html – DRL

+0

. У них такая же проблема, вызвав оболочку? – Tom

+0

@Tom я бы подумал, что единственная серьезная проблема в том, что запрошенная программа для выполнения не находится в $ PATH вызывающего процесса. – DRL

1

Что делают grep и wc, читают дескриптор файла STDIN как часть трубы | оператор.

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