Есть несколько вариантов, но это зависит от вашей платформы. При этом popen
должно работать в большинстве мест, например
#include <stdio.h>
FILE *stream;
stream = popen("acommand", "r");
/* use fread, fgets, etc. on stream */
pclose(stream);
Обратите внимание, что это имеет очень специфическое использование, он создает процесс, выполняя команду acommand
и присоединяет его стандарт таким образом, чтобы сделать его доступным из вашей программы через поток FILE*
.
Если вам необходимо подключиться к существующему процессу или выполнить более сложные операции, вам может потребоваться поискать другие возможности. Unix имеет различные механизмы для подключения стандартного процесса и т. Д.
В окнах вы можете использовать API CreateProcess
, чтобы создать новый процесс и подключить его стандартный дескриптор вывода к тому, что вы хотите. Windows также поддерживает popen
.
Хотя я не знаю простого C-способа сделать это, поэтому он всегда зависит от платформы APis.
Исходя из ваших правок popen
кажется идеальным, он "довольно переносимый", я не думаю, что есть UNIX-подобная ОС без него, действительно, это часть спецификации Single Unix и POSIX и позволяет вам делать именно то, что вы хотите, выполнить процесс, получить его вывод и обработать его.