最简单的代码:
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()帮不了我。
注意:我不想等待进程的执行,只想在它运行时,自己杀死它。
发布于 2014-04-25 07:18:13
根据您的愿望,您可以显式地终止或终止该过程。然而,这本身是不够的,因为您实际上需要等待进程终止。“杀死”意味着它将在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;
}main.pro
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpphttps://stackoverflow.com/questions/23286001
复制相似问题