如何解决避免 QProcess 被杀死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 运行我的 .jar 文件?
解决方法
您可能在完成之前调用了 destructor of QProcess
,这会终止文档中提到的进程。请注意,当 process
超出范围时会调用析构函数。
存在不同的解决方案:
-
等待进程完成:
waitForFinished
process.waitForFinished (-1); // -1 = no time out
-
在栈上构造
QProcess
QProcess *process = new QProcess(); ...
请注意,您应该在完成后销毁进程以避免内存泄漏。在构造期间指定
parent
可能有助于自动管理QProcess
的生命周期。 -
以分离模式启动进程:
startDetached
... process.startDetached ();
如果调用进程退出,分离的进程将继续运行,不受影响。
还可以使用
QProcess::startDetached
的静态重载。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。