簡體   English   中英

QProcess:啟動子進程,而無需等待完成但獲得完成信號

[英]QProcess: start child process without waiting for finishing it but getting finished signal

如何在QT應用程序中使用QProcess啟動外部子進程,並繼續執行主程序,而不必等待子進程完成,但是同時,在以下情況下從子進程獲取回調:他完成了嗎?

第一種情況:

QProcess* child = new QProcess();
connect(child, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(isFinished( int, QProcess::ExitStatus )));
child->start( "example.exe", QStringList() << path);
.
.
. further execution of main application

這里啟動了子進程,主應用程序繼續執行,但是盡管信號/插槽連接已完成,沒有任何QT錯誤,但子進程完成時沒有回調。

第二種情況:

QProcess* child = new QProcess();
connect(child, SIGNAL(finished(int, QProcess::ExitStatus)), this,       SLOT(isFinished( int, QProcess::ExitStatus )));
child->start( "example.exe", QStringList() << path);
child->waitForFinished();
.
.
. NO further execution of main application

在這里,子進程已啟動,並且主應用程序無法繼續執行,並且正確完成了從信號/插槽發出的回調。 兩者都不是我想要的。

有任何想法嗎?

故障發生在while / true塊中,在第一種情況下這是無止境的,因此無法正確執行qt應用程序主事件循環中的信號/插槽處理。

提示:我們的解決方案是使用qthread處理每個外部qprocess。 在必要時考慮互斥量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM