[英]Avoid QProcess being killed (QProcess: Destroyed while process is still running)
我试图运行这段代码:
QProcess process;
process.setWorkingDirectory("D:\\Programs\\Qt\\Units\\MyJavaProjects\\StackExp\\target");
process.setProgram("java.exe");
process.setArguments({"-jar","StackExp-1.0-SNAPSHOT.jar"});
process.start();
和 cmd 不会打开,也不会执行。 它只显示此消息:
QProcess: Destroyed while process ("java.exe") is still running
请问,谁知道怎么回事? 以及如何在 QProcess 中使用 cmd 运行 my.jar 文件?
您可能在QProcess
完成之前调用它的析构函数,这会杀死文档中提到的进程。 请注意,当process
退出 scope 时,将调用析构函数。
存在不同的解决方案:
等待进程完成: waitForFinished
process.waitForFinished (-1); // -1 = no time out
在栈上构造QProcess
QProcess *process = new QProcess(); ...
请注意,您应该在完成后破坏该进程以避免 memory 泄漏。 在构造期间指定parent
级可能有助于自动管理QProcess
的生命周期。
以分离模式启动进程: startDetached
... process.startDetached ();
如果调用进程退出,分离的进程将继续运行而不受影响。
也可以使用QProcess::startDetached
的 static 重载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.