繁体   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