[英]Detaching a started process
我已經使用QProcess::start()
啟動了一個進程,然后我需要將其分離。 我該怎么做? 我沒有在Qt文檔中找到相關信息。
我知道QProcess::startDetached()
,但是由於程序中的其他代碼,我無法使用它(我需要分離進程的啟動和分離)。
如果您查看QProcess::~QProcess()
,您將了解QProcess
如何通過其銷毀來終止該進程。 另請注意, QProcess::setProcessState()
受保護 ,這意味着您可以使用方法detach()
實現從QProcess
繼承的QDetachableProcess
以調用setProcessState(QProcess::NotRunning);
作為一種解決方法。
例如:
class QDetachableProcess : public QProcess
{
public:
QDetachableProcess(QObject *parent = 0) : QProcess(parent){}
void detach()
{
this->waitForStarted();
setProcessState(QProcess::NotRunning);
}
};
然后你可以做這樣的事情:
QDetachableProcess process;
process.setEnvironment(QStringList() << "SOME_ENV=Value");
process.start();
process.detach();
你不能在5.1, 見這里 。 評論中還有一個建議,不確定是否對您的案例有用):
變通方法建議:編寫一個啟動分離進程的幫助程序進程,並在完成所有設置后終止自身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.