Запуск QProcess из QThread

Я использовал QThreads в Qt, где мне нужно запустить исполняемый файл командной строки из потока Qt и запустить его в контексте потока.

Я использовал приведенный ниже код для того же самого, который, похоже, работает нормально. Однако я хотел знать, разрешено ли такое использование, поскольку мы запускаем QProcess из QThread.

void Help_Menu_Thread::run()
{
    Insert_Log("INFO::Help file referred by Admin");
    QProcess HelpStart;
    HelpStart.execute("c:\\windows\\hh.exe LPRS_help.chm");
    HelpStart.close();
}

Ждем вашего ответа.

С уважением,

Саураб Г.


person Saurabh Gandhi    schedule 05.06.2012    source источник


Ответы (1)


Этот способ безопасен, если вашей основной программе не нужно ждать вывода qprocess или его завершения. Этот процесс helpstart начнется с того, что поток является родительским процессом, работающим независимо. Но было бы более безопасно, если бы вы использовали HelpStart.waitForFinished() перед вызовом HelpStart.close();.

person ScarCode    schedule 05.06.2012
comment
Спасибо за быстрый ответ. У меня сложилось впечатление, что HelpStart.execute() будет блокироваться до тех пор, пока исполняемый файл, вызываемый внутри него, не завершится. Если это правда, приведенное выше использование будет правильным. Верно? - person Saurabh Gandhi; 05.06.2012
comment
Что ж, это может заблокировать дальнейшее выполнение вашего потока, но, очевидно, не вашей основной программы. - person ScarCode; 05.06.2012