首页 > 其他分享 >QT QProcess: Destroyed while process (“apple.exe“) is still running

QT QProcess: Destroyed while process (“apple.exe“) is still running

时间:2024-08-02 15:40:49浏览次数:9  
标签:QProcess exe QT process args Destroyed MainWindow append apple

一、出错原因
因为我这个程序是一直运行的,它会一直回显数据,如果你使用对象,start启动这个命令后,程序认为QProcess已经执行完毕,自动回收,但是此时程序正在执行中,所以无法销毁这个进程,导致出现这个问题。
二、错误代码

    QString cmd = "./bin/apple.exe";
    QStringList args;
    args.append("-mode=25280");
    args.append("-usr1=pig");

    QProcess p;
    p.setProcessChannelMode(QProcess::MergedChannels);
    p.start(cmd, args);

三、正确代码使用指针
所以对于一直运行的程序,可以采用指针对象,start执行命令

MainWindow::~MainWindow()
{
    if (m_process) {
        m_process->close();
        delete m_process;
    }
    delete ui;
}

void MainWindow::startApple()
{
    QString cmd = "./bin/apple.exe";
    QStringList args;
    args.append("-mode=25280");
    args.append("-usr1=pig");

    m_process = new QProcess();
    m_process->setProcessChannelMode(QProcess::MergedChannels);
    connect(m_process , &QProcess::readyReadStandardOutput , this , &MainWindow::onOut);
    m_process->start(cmd, args);

    if (!m_process->waitForStarted()) {
        qDebug() << "start failed:" << m_process->errorString();
    } else {
        qDebug() << "start success:";
    }
}

void MainWindow::onOut()
{
    //实时回显数据
    qDebug() << m_process->readAllStandardOutput().data();
}

 

标签:QProcess,exe,QT,process,args,Destroyed,MainWindow,append,apple
From: https://www.cnblogs.com/zzzsj/p/18338887

相关文章

  • Qt之QProcess
    一、简介QProcess是Qt框架提供的一个类,用于在应用程序中执行外部进程。它提供了一系列函数来启动、控制和与外部进程进行交互。QProcess的一些重要特性和功能包括:启动外部进程:QProcess可以用于启动外部应用程序或命令行工具。通过start函数可以指定要执行的程序路径以及相关......
  • Qt 登录界面
            本文代码效果如下:    本文代码:https://download.csdn.net/download/Sakuya__/89607657https://download.csdn.net/download/Sakuya__/89607657代码之路 LoginTitleBar.h  自定义的透明标题栏#ifndefLOGINTITLEBAR_H#defineLOGINTITLEBA......
  • Qt 和 VS 使用 crypto++
    官网:https://www.cryptopp.comGitHub:https://github.com/weidai11/cryptopp修改后的820版本https://github.com/dragonfly1208/cryptopp/tree/cryptopp820在线文档:https://www.cryptopp.com/docs/ref/index.html1生成动态库静态库文件1.1VS编译生成dll和lib库,版本:cryptop......
  • Qt项目——文本编辑器(功能模块④)
    项目地址:GitHub-Outlier9/CatEditor:Cat文本编辑器--Qt有帮助的话各位点点star啦,感谢!如果有需要学习该项目的人,觉得看文档较为困难,可以加我联系方式,给github点个star后可免费提供学习视频!!!(11)字体颜色文字设置颜色操作,在.ui界面对colorAction转到槽,选triggered信号,然......
  • clion 《cmake自定义静态库后,生成的exe无法运行》
    背景项目生成lib引入,在生成exe过程中无法正常运行处理办法让链接器静态链接GCC和C++标准库set(CMAKE_EXE_LINKER_FLAGS"-static-libgcc-static-libstdc++")主CMakeLists.txtcmake_minimum_required(VERSION3.28)project(speech)#编译版本set(CMAKE_CXX_STANDAR......
  • TpmVscMgr.exe 命令行工具让具有管理凭据的用户能够在计算机上创建和删除 TPM 虚拟智
     tpmvscmgr|MicrosoftLearn tpmvscmgr命令行工具让具有管理凭据的用户能够在计算机上创建和删除TPM虚拟智能卡。 tpmvscmgrTpmVscMgr.exe 命令:    create        [/quiet]        /name<名称>       ......
  • VSC环境配置(QT)
    VisualStudioCode1.QT安装系统:win10安装准备:官网下载qt-online-installer-windows-x64.exe在线安装程序QT账户申请个人免费版选择版本:勾选Archive并筛选选择对应组件若是自己下载MinGW,需要使用posix版本,实测5.3、7.3和8.1posix版本均可使用,为了保持一致性......
  • Log4cplus导入QT5(VSCode)
    下载GitHub地址:https://github.com/log4cplus/log4cplus版本选择log4cplus-2.0.2编译环境搭建完成后即可CMake编译生成预编译库,可参考该项目README.md进行功能选择导入在实际工程CMakeLists.txt中导入头文件(库include目录),并链接预编译好的.dll文件到项目中运行及调试la......
  • 【Qt】QTextEdit
    QTextEdit是Qt中用于编辑和显示文本内容的类。其提供了丰富的用户界面控件,可以用于创建和包含格式化文本、图片和链接的文本编辑器常用属性 属性说明markdown输入框内持有的内容。支持markdown格式,能自动的对markdown文本进行渲染成htmlhtml输入框持有的内容。可以支持大......
  • MQTT协议与中间件
    发布订阅模式:消费者(客户端)订阅服务器(作为代理Broker)上的主题,当有生产者(客户端)在主题中发布消息时,消费者可以收到。MQTT:基于发布订阅模式的轻量级通讯协议,可以以极少的代码和有限带宽,为连接远程设备提供实时可靠的消息服务。广泛应用于物联网,小型设备。MQTT传输的消息分为两......