我想从设置了特定路径的 Qt 应用程序启动 cmd.exe。我在 QProcessEnvironment 中插入“Path”并将该环境设置为 QProcess。然后我开始分离“cmd”。在命令提示符上,路径与调用应用程序的路径相同,而不是我刚刚设置的路径。我错过了什么?我在 Windows 8.1.s 上使用 Qt 5.2.0 和 mingw 以及 Qt-creator 3.0.0
QProcess process(this);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("Path", "MyPath");
process.setProcessEnvironment(env);
QStringList args;
args << "/D" << "/K" << "dir";
process.startDetached("cmd", args);
The startDetached
方法是静态方法。所以你应用到的所有状态process
对象被忽略,因为该方法看不到它。如果您开始该过程start()
相反,新进程将适应您的环境。
process.start("cmd", args);
当然,您希望分离新进程,以便父进程可以终止,而不会强制新进程也终止。据我所知,QProcess
类并没有为您提供轻松实现这一目标的方法。您可以修改父进程的环境,以便新进程继承这些修改,但这听起来根本不可取。
这个问题提出了一个可能的解决方法:分离已启动的进程 https://stackoverflow.com/questions/17501642/detaching-a-started-process.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)