Предположим, что я хочу вызвать подпроцесс из моей программы, и я хочу прочитать результат этого подпроцесса в моей программе.
Вот тривиальный способ сделать это:
//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
Мы все знаем, что операции ввода/вывода являются вычислительно медленными. Чтобы ускорить это, я хотел бы пропустить шаг write-to-file-then-read-from-file и вместо этого перенаправить вывод этого подпроцесса непосредственно в stdin (или некоторые другие поток)
Как мне это сделать? Как пропустить операцию ввода-вывода?
Примечание: многие программы выделяют некоторые диагностические материалы в stdout во время их запуска и записывают чистую версию вывода в stdout (ex: stdout: "step1... done, step2... done, step3..done" -o file-out: "Магическое число: 47.28" ), поэтому игнорирование аргумента "-o" и подтверждение того, что вывод будет автоматически перенаправлен на stdout, не обязательно полезно...
Спасибо всем заблаговременно.