最简单的代码:
void test
{
QProcess p;
p.start("sleep 10");
p.waitForBytesWritten();
p.waitForFinished(1);
}
当然,在函数结束前进程是不能结束的,所以会显示警告信息:
QProcess: Destroyed while process ("sleep") is still running.
我不希望显示此消息 - 我应该在函数结束之前自行销毁该进程,但我找不到如何正确执行此操作:p.~QProcess(), p.terminate(), p .kill() 帮不了我。
注意:我不想等待进程执行,只是在它运行时自行终止它。
最佳答案
您可以根据需要显式终止或终止进程。但是,这本身还不够,因为您实际上需要等待进程终止。 “kill”意味着它将在 Unix 上向进程发送 SIGKILL 信号,这也需要一些时间才能真正完成。
因此,你会写这样的东西:
main.cpp
#include <QProcess>
int main()
{
QProcess p;
p.start("sleep 10");
p.waitForBytesWritten();
if (!p.waitForFinished(1)) {
p.kill();
p.waitForFinished(1);
}
return 0;
}
主程序
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
关于c++ - Qt避免警告'QProcess : destroyed while process still running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286001/