【发布时间】:2020-11-15 06:43:53
【问题描述】:
我想使用 QProcess 在 Ubuntu 中通过 Qt 运行命令。
我的命令是fluent3DMeshToFoam <mesh address>
当我将它运行到终端时,它可以并在特定位置产生总和输出和文件。但我在使用 QProcess 运行它时遇到问题。
我注意到我应该将fluent3DMeshToFoam 的路径添加到我的 QProcess 对象的 ProcessEnvironment 中。所以我做了:
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PATH" , "<path of fluent3DMeshToFoam>");
myProcess.setProcessEnvironment(env);
myProcess.start("fluent3DMeshToFoam" , QStringList() << "<mesh address>");
myProcess.waitForFinished(-1);
我连接了readyRead() 和errorOccurred() 信号,运行后,errorOccurred 信号发出并显示以下错误:
execve: No such file or directory
我搜索了很多,但找不到问题所在。 谢谢。
【问题讨论】:
-
你是如何安装fluent3DMeshToFoam的?
-
@eyllanesc 它是 OpenFOAM5 程序的一部分,我已使用以下链接在离线模式下安装它:openfoam.org/download/5-0-source
-
您确定路径设置正确吗?另请注意,
QProcess::insert("PATH",...将替换任何名为PATH的现有变量。例如如果我在/opt/bin/fluent3DMeshToFoam上安装了fluent3DMeshToFoam,我会使用env.insert("PATH", env.value("PATH") + ":/opt/bin")之类的东西。 -
@G.M.如您所述,我更改了代码,但错误仍然存在。另请注意,当我在终端中运行
echo $PATH时,fluent3DMeshToFoam的安装路径可用,但是当我在qDebugenv.value("PATH")之前env.insert(...)时fluent3DMeshToFoam的路径不可用。 -
这个帖子可能有用:qtcentre.org/threads/…