2012-06-05 4 views
0

Qt에서 QThread를 사용하고 있는데, Qt 스레드 내에서 명령 줄 실행 파일을 실행하고 스레드 컨텍스트 내에서 동일한 명령을 실행해야합니다.QThread에서 QProcess를 시작하는 중

다음과 같은 코드를 사용하여 정상적으로 작동하는 것처럼 보입니다. 그러나 QThread 내에서 QProcess를 시작하기 때문에 이러한 종류의 사용이 허용되는지 알고 싶습니다.

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(); 
} 

귀하의 회신을 기다리고 있습니다.

감사합니다,

Saurabh G. 당신의 메인 프로그램은 qprocess의 출력 또는 완료를 기다릴 필요가없는 한만큼이 방법을 사용하는 것이 안전합니다

답변

1

. 이 도움말 시작 프로세스는 스레드가 독립적으로 실행되는 부모 프로세스로 시작합니다. 그러나 전화하기 전에 HelpStart.waitForFinished()을 사용하면 더 안전 할 것입니다. HelpStart.close();

+0

답장을 보내 주셔서 감사합니다. 필자는 HelpStart.execute()가 호출 된 실행 파일이 종료 될 때까지 차단한다는 인상을 받았습니다. 이것이 사실이라면 위의 사용법이 정확할 것입니다. 권리? –

+0

글타래는 쓰래드 프로세스가 더 진행하지 못하도록 막을 수는 있지만 주 프로그램은 분명히 차단할 수 있습니다. – ScarCode