Уважаемые участники форума!
Подскажите, пожалуйста, как перенаправить стандартный поток ввода?
Есть программа А. Она должна запустить программу B, которая в свою очередь (на определённом этапе выполнения) ожидает от пользователя ввода (например, строки). Требуется, чтобы программа А заменила собой пользователя и сама обеспечила ввод строки.
Делаю нечто подобное...
#include <QProcess>
int main() {
QString program( "B" ); // Исполняемый файл программы В существует и лежит здесь, в корне.
QStringList arguments;
arguments << "";
QProcess prog;
prog.setStandardInputFile( "stdin" ); // Файл существует, доступ разрешён.
prog.execute( program, arguments );
return 0;
}
В файле stdin уже записана некоторая строка. Я хочу, чтобы, когда программа B запросит ввод от пользователя, ожидаемая ею строка взялась из данного файла.
Однако такой код не работает.
Что делать, куда копать? Заранее благодарен за помощь, поскольку в Qt Assistant, к сожалению, не приводится программного примера использования функции setStandardInputFile(). Сказано лишь, что её вызов
после запуска соответствующего процесса бесполезен (что, в общем-то, и так понятно).
Строго говоря, можно решить указанную проблему с помощью манипуляций с системными дескрипторами процесса (применяя вызовы ::open(), ::dup() и ::close()), однако это не совсем кошерно (нужно вставлять разные заголовочники для Windows и Linux, ведь решение мне нужно кроссплатформенное).