簡體   English   中英

分離已啟動的進程

[英]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.

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