Получение вывода системной команды из stdout в C
Я пишу программу C под Android/Linux, которая запускает системную команду. Команда выводит некоторый текст в stdout, и я пытаюсь захватить вывод в строку или массив символов.
Например:
system("ls");
будет отображать содержимое текущего каталога в stdout, и я хотел бы иметь возможность записывать эти данные в переменную программно в C.
Как это сделать?
Спасибо.
Ответы
Ответ 1
Вы хотите использовать popen
. Он возвращает поток, например fopen
. Однако вам нужно закрыть поток с помощью pclose
. Это связано с тем, что pclose
выполняет очистку ресурсов, связанных с запуском дочернего процесса.
FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
/*...*/
}
pclose(ls);