如何使用QProcess :: startDetached()与setStandardOutputFile()结合使用

时间:2019-02-17 07:42:53

标签: c++ qt

我有一个应该启动另一个进程的进程,并且正在使用QProcess :: startDetached(),因为与分叉的进程没有关系。现在,我试图找出一种将stdout重定向到文件的方法。 当我将setStandardOutputFile()与QProcess :: startDetached()结合使用时,无法重定向到文件。 虽然setStandardOutputFile()与QProcess :: start()可以很好地工作。

我认为因为QProcess :: startDetached()是静态方法,所以它可能无法与setStandardOutputFile()一起使用,但是我在QProcess文档中看到了该语句,

Only the following property setters are supported by startDetached():
setArguments()
setCreateProcessArgumentsModifier()
setStandardOutputFile()
etc.

试图理解此声明在文档中的含义。

这是代码的要旨,

void ForkProcess()
{
    QProcess processObj;
    processObj.setStandardOutputFile("/tmp/stdoutfile.txt");
    processObj.startDetached(processWithArguments);
}

这不会将stdout重定向到文件,而如果我使用processObj.start(processWithArguments)重定向就可以了。

关于QProcess :: startDetached()为什么不起作用的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试使用non-static `QProcess::startDetached member ...

bool QProcess::startDetached(qint64 *pid = nullptr);

以下内容似乎对我来说很好(Suse Linux + Qt5.12.0)...

QProcess process;
process.setProgram("ls");
process.setStandardOutputFile("/tmp/stdoutfile.txt");
process.startDetached();