插入 PATH 时,终端中的命令 运行 但不在 QProcess 中
Command run in terminal but not in QProcess while PATHs are inserted
我想使用 QProcess 通过 Qt 运行 Ubuntu 中的命令。
我的命令是 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
我找了很多都没有找到问题所在。
谢谢。
经过 a-lot 次搜索,最后我 found-out 发现 LD_LIBRARY_PATH
有一个 Qt 没有考虑到的问题。
在不使用 setProcessEnvironment(...)
的情况下,我打开终端 export
运行 之前的 LD_LIBRARY_PATH
,如下所示:
export LD_LIBRARY_PATH
exec "./my_app"
然后 my_app 知道存储的所有库 LD_LIBRARY_PATH
我想使用 QProcess 通过 Qt 运行 Ubuntu 中的命令。
我的命令是 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
我找了很多都没有找到问题所在。 谢谢。
经过 a-lot 次搜索,最后我 found-out 发现 LD_LIBRARY_PATH
有一个 Qt 没有考虑到的问题。
在不使用 setProcessEnvironment(...)
的情况下,我打开终端 export
运行 之前的 LD_LIBRARY_PATH
,如下所示:
export LD_LIBRARY_PATH
exec "./my_app"
然后 my_app 知道存储的所有库 LD_LIBRARY_PATH