Russian Qt Forum
Ноябрь 25, 2024, 13:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Программное перенаправление stdin  (Прочитано 2170 раз)
deninok
Гость
« : Март 10, 2009, 22:49 »

Уважаемые участники форума!

Подскажите, пожалуйста, как перенаправить стандартный поток ввода?

Есть программа А. Она должна запустить программу 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, ведь решение мне нужно кроссплатформенное).
« Последнее редактирование: Март 10, 2009, 22:52 от deninok » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.084 секунд. Запросов: 20.