Предположим, я хочу вызвать подпроцесс из моей программы, и я хочу прочитать вывод из этого подпроцесса в моей программе.
Вот тривиальный способ сделать это:
//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 (или другой поток)
Как мне это сделать? Как мне пропустить операцию i/o?
Примечание: многие программы во время работы выплевывают в stdout диагностическую информацию и записывают чистую версию вывода в stdout (например: stdout: "step1...done, step2...done, step3...done" -o file-out: "The magic number is: 47.28"), поэтому игнорирование аргумента "-o " и доверие к тому, что вывод будет автоматически перенаправлен в stdout, не всегда полезно...
Заранее спасибо всем.