我已经开始使用一个过程QProcess::start(),之后我需要将其分离。我该怎么做?我没有在 Qt 文档中找到相关信息。
我知道QProcess::startDetached(),但是由于程序中的其他代码,我不能使用它(我需要将进程的启动和分离分开)。
如果您查看的实现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();
您不能从 5.1 开始,请参见此处。评论中还有一个建议,不确定是否对您的情况有用):
解决方法建议:编写一个辅助进程来启动分离的进程,并在所有设置完成后自行终止。