使用C++将守护进程和主进程设计成windows服务,并使用命名管道进行通讯

本文介绍了如何使用C++在Windows上将守护进程和主进程设计为服务,并通过命名管道进行通信。详细阐述了服务的创建、命名管道的实现以及异步通讯的方法,强调了在字符串转换和命名管道操作中的注意事项。最终实现了一个始终运行的守护服务,能够监控并管理主服务的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目需求,需要设计一个守护进程来守护主进程。
守护进程的实现方式:
1. 设计成进程
2. 设计成服务

因为希望主服务随windows开机启动即启动,所以将守护进程和主进程设计成windows服务。

守护服务于主服务间的通讯方式:
1. socket
2. 管道(分为匿名管道和命名管道)
3. WM_COPYDATA消息
  WM_COPYDATA是一种非常强大却鲜为人知的消息。当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息,这样收发双方就实现了数据共享。
  WM_COPYDATA是一种非常简单的方法,它在底层实际上是通过文件映射来实现的。它的缺点是灵活性不高,并且它只能用于Windows平台的单机环境下。
  4. 邮件槽
  .
  .
  .

由于没有使用过管道进行通讯,所以采用管道通讯。又因为后期可能要跨机器通讯,所以采用命名管道通讯。

以下为项目实现过程:

简介: 将守护进程和主进程都设计成windows服务,并使用命名管道进行通讯。
开发工具:VS2017
语言:C++
实现概述:创建一个启动守护服务的exe文件,启动守护服务时,守护服务去创建主服务,并检测并改正主服务的一切行为!
实现步骤:

  1. 创建一个启动守护服务的exe。(windows的服务的创建和属性修改必须要有“管理员权限”,即VS设置为管理员权限启动)。
    在这里插入图片描述在这里插入图片描述
    C

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值