分离已启动的进程

Guy*_*Guy 6 c++ qt

我已经开始使用一个过程QProcess::start(),之后我需要将其分离.我该怎么做?我没有在Qt文档中找到相关信息.

我知道QProcess::startDetached(),但由于程序中的其他代码,我无法使用它(我需要分离进程的启动和分离).

ZHA*_*kai 8

如果您查看实现QProcess::~QProcess(),您将知道如何QProcess通过销毁终止该过程.另外,请注意QProcess::setProcessState()受保护,这意味着您可以使用方法实现QDetachableProcess继承自作为变通QProcess方法detach()调用setProcessState(QProcess::NotRunning);的方法.

例如:

class QDetachableProcess : public QProcess
{
public:
    QDetachableProcess(QObject *parent = 0) : QProcess(parent){}
    void detach()
    {
        this->waitForStarted();
        setProcessState(QProcess::NotRunning);
    }
};
Run Code Online (Sandbox Code Playgroud)

然后你可以做这样的事情:

QDetachableProcess process;
process.setEnvironment(QStringList() << "SOME_ENV=Value");

process.start();

process.detach();
Run Code Online (Sandbox Code Playgroud)


pep*_*ppe 5

从 5.1 开始,您不能,请参阅此处。评论中还有一个建议,不确定是否对您的情况有用):

变通方法建议:编写一个辅助进程来启动分离的进程,并在所有设置完成后自行终止。