c ++: вывод подпроцесса в stdin

Предположим, я хочу вызвать подпроцесс из моей программы, и я хочу прочитать вывод этого подпроцесса в мою программу.

Вот тривиальный способ сделать это:

//somefile.cpp
system("sub_process arg1 arg2 -o file.out");
           //call the subprocess and have it write to file
FILE *f = std::fopen("file.out", "r");
//.... and so on

Мы все знаем, что операции ввода-вывода вычислительно медленны. Чтобы ускорить это, я хотел бы пропустить шаг «запись в файл, затем чтение из файла» и вместо этого перенаправить вывод этого подпроцесса.прямо вSTDIN (или какой-то другой поток)

Как бы я это сделал? Как мне пропустить операцию ввода / вывода?

Примечание: многие программы выкладывают некоторые диагностические данные в stdout во время работы и записывают чистую версию вывода в stdout (например: stdout: "step1 ... done, step2 ... done, step3..done" -o file-out: «Волшебное число: 47.28»), поэтому игнорирование аргумента «-o» и уверенность в том, что вывод будет автоматически перенаправлен на стандартный вывод, не всегда помогают ...

Спасибо всем заранее.

Ответы на вопрос(3)

Ваш ответ на вопрос