2016-10-25 4 views
0

Я делаю следующее, чтобы начать процесс и ждет его завершения (я намеренно избегаю использования SIGNAL/SLOTS в этом случае).QProcess state() всегда возвращает RUNNING

QProcess *myProcess = new QProcess(); 
QString program = "test.exe"; 
QStringList args; 
myProcess->start(program, args); 
myProcess->waitForStarted(); 

while(myProcess->state() == QProcess::Running) 
{ 
    // Do other things... 
} 

Я могу проверить, что test.exe завершает работу. Но состояние процесса по какой-то причине всегда QProcess :: Running. Я использую Qt 4.8.2 в Windows.

ответ

1

Если «делать другие вещи» не включает в себя события обработки цикла событий потока, то QProcess никогда не получит возможность обновить его state.

Либо waitForFinished, если это необходимо для блокировки нити или подключения к сигналу finished().

+0

Добавление proc-> waitForFinished (1); в замкнутом цикле исправлена ​​проблема. – Paul

0

Я не думаю, что state() должен использоваться для проверки закрытой программы, но вы можете использовать что-то вроде while(!waitForFinished(1)).

Смежные вопросы