我試圖找到一個解決以下情況:等待QProcess中完成或持續時間超過
一個QProcess中應該運行的命令,停止執行它達到期望的持續時間或命令時完成。這個QProcess由QThread Worker啓動。
這很容易通過這個來完成:
QProcess task("executedTool -parameters");
task.start();
task.waitForFinished(desired_max_duration_in_ms);
但也必須暫停孔的東西的功能。 我可以很容易地通過並行線程信號暫停QProcess中:
kill(task_.pid(), SIGSTOP);
和
kill(task_.pid(), SIGCONT);
但隨後waitForFinished持續時間繼續運行並超過而QProcess中被暫停。
有沒有人有一個想法如何做到這一點? 當我可以暫停運行QProcess和wait命令的孔QThread時,等待持續時間也會暫停。但是我怎樣才能得到QThread的pid? 是否有更好的Qt解決方案來執行QProcess暫停?
我還沒有機會仔細檢查這一點,但是您可以像暫停它一樣,然後執行'task.setProcessState(QProcess :: NotRunning)'來指示該進程不再運行。我*認爲*應該停止waitForFinished,但我不是100%確定的。 – 2013-02-21 13:49:05
感謝您的提示。不幸的是,它並沒有停止waitForFinished,它仍然用完。 我嘗試了一種現在正在工作的不同方法。如果您有興趣,請參閱以下內容:-)。 – Josch 2013-02-21 13:58:20
奇怪的是,我認爲國家改變也會暫停waitForFinished。至少你已經找到了解決方案。 – 2013-02-21 14:23:41