7

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

我知道QProcess::startDetached(),但是由于程序中的其他代码,我不能使用它(我需要将进程的启动和分离分开)。

4

2 回答 2

9

如果您查看的实现QProcess::~QProcess(),您将知道如何QProcess通过销毁来终止进程。另外,请注意QProcess::setProcessState()是 protected,这意味着您可以实现一个QDetachableProcess继承自QProcess的方法detach()来调用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();
于 2016-04-12T03:08:38.227 回答
5

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

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

于 2013-07-06T11:28:22.600 回答