我有一个应该启动另一个进程的进程,并且正在使用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()为什么不起作用的任何想法?
答案 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();