Предположим, я хочу вызвать подпроцесс из моей программы, и я хочу прочитать вывод этого подпроцесса в мою программу.
Вот тривиальный способ сделать это:
//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 "и надеемся, что выходные данные будут автоматически перенаправлены на стандартный выводне обязательно полезно ...
Спасибо всем заранее.