
目录整体架构说明公共文件 MsgStruct.h(两个项目都要有)工程一:MainApp(主程序,QLocalServer + QProcess)MainApp.proMainApp.hMainApp.cppmain.cpp(主程序入口)工程二:SubProcess(子程序,QLocalSocket 客户端)SubProcess.proSubClient.hSubClient.cppmain.cpp(子程序入口)使用步骤关键说明整体架构说明主程序 = QLocalServer(IPC 服务端) + QProcess(启动子进程)子进程 = QLocalSocket(IPC 客户端)流程:主程序启动,创建QLocalServer监听本地管道;主程序通过QProcess拉起子进程 exe;子进程内部初始化QLocalSocket,连接主程序本地服务;主、子进程通过本地套接字双向收发自定义结构体消息;主程序监听 QProcess 信号,感知子进程崩溃 / 退出。下面给两套完整工程,包含.pro、全部头文件、cpp,分为:MainApp(主程序:QLocalServer + QProcess)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.proproQT += core QT -= gui CONFIG += c++11 console CONFIG -= app_bundle DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ main.cpp \ MainApp.cpp HEADERS += \ MainApp.h \ MsgStruct.hMainApp.hcpp运行#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