我已经开始使用一个过程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 开始,请参见此处。评论中还有一个建议,不确定是否对您的情况有用):
解决方法建议:编写一个辅助进程来启动分离的进程,并在所有设置完成后自行终止。