Невозможно прочитать со стандартного ввода в процессе, созданном с помощью QProcess::execute

Пример кода

int main(int, char * argv[]) {
    QString input = QTextStream(stdin).readLine();
    QTextStream(stdout) << input << "\nWe need to go deeper...\n";
    return QProcess::execute(argv[0]);
}

Тестовый забег

./test 
level 1<Enter>
level 1
We need to go deeper...
level 2<Enter>

и ничего не происходит...

PS. system() работает, но потребует написания кода для правильного экранирования аргументов командной строки.


person bitfield    schedule 27.12.2012    source источник


Ответы (1)


Решено с помощью execvp() вместо QProcess::execute().

person bitfield    schedule 27.12.2012
comment
Или, независимо от платформы: создайте экземпляр QProcess, используйте start() вместо execute(). - person Frank Osterfeld; 27.12.2012