当前位置: 首页 > news >正文

QLocalServer + QLocalSocket+QProcess

目录

整体架构说明

公共文件 MsgStruct.h(两个项目都要有)

工程一:MainApp(主程序,QLocalServer + QProcess)

MainApp.pro

MainApp.h

MainApp.cpp

main.cpp(主程序入口)

工程二:SubProcess(子程序,QLocalSocket 客户端)

SubProcess.pro

SubClient.h

SubClient.cpp

main.cpp(子程序入口)

使用步骤

关键说明


整体架构说明

主程序 = QLocalServer(IPC 服务端) + QProcess(启动子进程)子进程 = QLocalSocket(IPC 客户端)流程:

  1. 主程序启动,创建 QLocalServer 监听本地管道;
  2. 主程序通过 QProcess 拉起子进程 exe;
  3. 子进程内部初始化 QLocalSocket,连接主程序本地服务;
  4. 主、子进程通过本地套接字双向收发自定义结构体消息;
  5. 主程序监听 QProcess 信号,感知子进程崩溃 / 退出。

下面给两套完整工程,包含 .pro、全部头文件、cpp,分为:

  1. MainApp(主程序:QLocalServer + QProcess)
  2. SubProcess(子程序:QLocalSocket 客户端)共用 MsgStruct.h,两个项目都复制一份。

公共文件 MsgStruct.h(两个项目都要有)

cpp

运行

#ifndef MSGSTRUCT_H #define MSGSTRUCT_H #include <QString> #include <QDataStream> struct Msg { int cmd; QString text; }; QDataStream& operator<<(QDataStream& ds, const Msg& m) { ds << m.cmd << m.text; return ds; } QDataStream& operator>>(QDataStream& ds, Msg& m) { ds >> m.cmd >> m.text; return ds; } #define SOCKET_NAME "MainAppLocalIPC" #endif

工程一:MainApp(主程序,QLocalServer + QProcess)

MainApp.pro

pro

QT += core QT -= gui CONFIG += c++11 console CONFIG -= app_bundle DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ main.cpp \ MainApp.cpp HEADERS += \ MainApp.h \ MsgStruct.h

MainApp.h

cpp

运行

#ifndef MAINAPP_H #define MAINAPP_H #include <QObject> #include <QLocalServer> #include <QLocalSocket> #include <QProcess> #include "MsgStruct.h" class MainApp : public QObject { Q_OBJECT public: explicit MainApp(QObject *p = nullptr); void startServer(); void launchSubProcess(const QString& subExePath); void sendAllClientMsg(const Msg& msg); private: QLocalServer* m_localServer; QProcess* m_subProcess; private slots: void onNewClient(); void onSocketReadyRead(); void onClientDisconnect(); void onProcStarted(); void onProcStd
http://www.jsqmd.com/news/1064288/

相关文章:

  • USB安全弹出工具终极指南:告别“设备正在使用中“的烦恼
  • 如何免Steam客户端下载创意工坊模组:WorkshopDL完整指南
  • 武汉中央空调维修哪家好?鑫诚制冷、嘉一制冷2026本地口碑榜 - 我叫一
  • Python 版本和项目管理工具 uv 的基本用法
  • SteamShutdown终极指南:智能监控Steam下载完成自动关机
  • SpringBoot与数据库整合:实现高效数据访问
  • 2026年蜂蜜厂家推荐排行榜:纯蜂蜜/成熟蜂蜜/天然蜂蜜/原蜜蜂蜜/农家蜂蜜/土蜂蜜/养胃蜂蜜批发商精选 - 品牌发掘
  • Seedance 2.0:AI视频工作流的工程化临界点
  • 2026亲测10款降AI率工具红黑榜!优缺点全公开,达标率直逼行业天花板
  • 5大核心功能,用JPEXS Free Flash Decompiler轻松拯救Flash数字遗产
  • 鲁棒预测控制如何补偿切换系统输入延迟:原理、设计与实现
  • 2026年传统制造GEO优化行业服务商深度选型指南 - GEO优化
  • DSP56303 SCI串口通信:从寄存器配置到多处理器网络实战
  • 2026年大湾区GEO优化公司实力榜单与选型指南 - GEO优化
  • 如何在Mac上免费解锁百度网盘SVIP下载速度:3分钟完整指南
  • 专业级Kafka监控平台深度配置指南:从架构设计到生产部署
  • PowerPC e600性能监控单元实战:从寄存器编程到性能瓶颈精准定位
  • 2026年科技互联网GEO优化行业服务商选型指南:精选实力派全维深度解析 - GEO优化
  • 上海专业宠物火化机构排行:服务与口碑实测对比 - 得赢
  • 打卡第九天 - P4994 - 2026 - 6 - 22
  • 汽车无线充电基线功率方案:NXP MWCT100xA芯片架构与工程实践详解
  • 基于物理信息图神经网络的无人机群分散式连接恢复算法
  • 深度剖析Java面试题:反射、注解与动态代理
  • 5个专业技巧:深度掌握OpenArk开源反Rootkit工具
  • Cloudflare+Ubuntu 22.04+Nginx:Origin CA全链路部署与排障
  • 2026年 轴承座厂家推荐排行榜:精密轴承座/托辊轴承座/不锈钢/碳钢/合金钢/轴承钢/冲压轴承座品牌优选 - 品牌发掘
  • 量子计算中的条件最小熵:连接信息论与安全性的核心度量
  • 2026年密集型母线槽与新能源母线槽及数据中心母线槽品牌工厂:江苏源头厂家实力解析 - 企业推荐官【官方】
  • 全芯片仿真(FCS)在嵌入式开发中的应用:以HC08外设调试为例
  • 基于NXP P2020DS平台的嵌入式Linux系统开发全流程解析