由于项目需求,需要设计一个守护进程来守护主进程。
守护进程的实现方式:
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文件,启动守护服务时,守护服务去创建主服务,并检测并改正主服务的一切行为!
实现步骤:
-
创建一个启动守护服务的exe。(windows的服务的创建和属性修改必须要有“管理员权限”,即VS设置为管理员权限启