c++ - Qt避免警告'QProcess : destroyed while process still running

标签 c++ qt qtcore qprocess

最简单的代码:

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/

相关文章:

C++,类 : Out-of-line declaration of a member error?

c++ - 如何在Qt 中的网格布局中添加滚动条?

c++ - 如何在 project.pro 中调用带有源代码的嵌套文件夹中的文件?

c++ - 如何知道 Qt 表单是否有效

c++ - Qt metaObject->indexOfMethod 总是返回 -1

c++ - 将 std::vector<bool> 转换为 std::string

c++ - std::dec仍然将内存地址输出到十六进制?

qt - QtWebEngine 依赖应用程序的静态构建

qt - 在没有指针的情况下在 Qt 中 move 语义?

c++ - 不完整类型(类)的使用无效