繁体   English   中英

避免 QProcess 被杀死 (QProcess: Destroyed while process is still running)

[英]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 时,将调用析构函数。

存在不同的解决方案:

  1. 等待进程完成: waitForFinished

     process.waitForFinished (-1); // -1 = no time out
  2. 在栈上构造QProcess

     QProcess *process = new QProcess(); ...

    请注意,您应该在完成后破坏该进程以避免 memory 泄漏。 在构造期间指定parent级可能有助于自动管理QProcess的生命周期。

  3. 以分离模式启动进程: startDetached

     ... process.startDetached ();

    如果调用进程退出,分离的进程将继续运行而不受影响。

    也可以使用QProcess::startDetached的 static 重载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM