@parkito

Как хранить результат вызова системной команды?

Здравствуйте. Помогите, пожалуйста разобраться в следующем вопросе:
Мне нужно в программе на С/С++, с помощью команды в bash, посчитать количество строк в файле, содержащих букву а. Пишу программу.
#include<stdio.h>
int main() {
      
    system("cat 1.txt | grep -c \"a\" ");
       return 0;
}


Но мне нужно записать вывод system("cat 1.txt | grep -c \"a\" "); в переменную внутри самой программы. Что то типа такого int i = system("cat 1.txt | grep -c \"a\" ");. Как можно это организовать?
  • Вопрос задан
  • 558 просмотров
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
man popen
#include <stdio.h>

int main()
{
    int n;
    FILE *f = popen("grep -c \"a\" < 1.txt", "r");
    fscanf(f, "%d", &n);
    pclose(f);
    ...
}
Ответ написан
извращение, но,
переопределить console out потоком строковым, запустить команду, обратно поменять оут ,вывести строчку.
Запустить процЕСС ,у которого аут будет в ваш пайп идти и т.п.
Ответ написан
@abcd0x00
Самое оптимальное будет - добавить в команду, передаваемую в system(), перенаправление вывода в файл, а потом этот файл прочитать через fopen(). После всего удалить файл через remove().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы