第 1 章 功能介绍1.1 功能l 守护软件启动时自动启动设定的进程 l 进程退出后,守护软件会自动重新启动 l 可以设定telnet远程登录的用户名和密码 l 可以通过telnet控制守护软件,可以执行的功能参考第二章介绍 1.2 设置所有信息记录在当前目录下的commonDaemon.ini文件中。文件内容如下。 [setting] count=2 ;需要启动的进程数量 [1] ;第一个进程的序号为1 name=udpTest ;服务名称,可以根据需要自行定义 process=.\udpTest.exe ;文件名 parameter= ;启动进程时的参数 directory=.\ ;工作目录 auto=1 ;是否自动重启,1:自动重启,0:不自动重启 [2] ;第二个进程的序号为2 name=tcpTest.exe process=.\tcpTest.exe parameter= directory=.\ auto=0 [user] ;远程登录的用户名和密码 user=pwd ;等号左边为用户名,等号右边为密码,不允许空密码 demo=demo 1.3 软件中的常量l common daemon远程监控LISTEN端口
#define DAEMON_REMOTE_MONITOR_PORT 3411 l 文字输出窗口名称
#define SCREEN_NAME "common_daemon" l 日志保存目录
#define LOG_DIR ".\\log" l 日志文件名
#define LOG_NAME "common_daemon_log" l 配置文件名
#define INI_FILENAME ".\\commonDaemon.ini" 1.4 界面 第 2 章 远程监控命令2.1 功能通过远程监控软件(telnet)连接并登录后可以执行以下命令: h 显示帮助信息。 c xxx 停止xxx号服务的检查,停止对xxx号服务的自动重启。 o xxx 开始xxx号服务的检查,启动对xxx号服务的自动重启。 l 列出所有服务,列出所有配置数据。 k xxx 强制关闭指定进程。 2.2 界面 第 3 章 关于程序的说明3.1 启动流程l 初始化Socket:AfxSocketInit l 初始化各个守护线程:InitDaemonEnv n 初始化文字输出窗口 n 读取配置信息:glo_iniDaemon.InitData() n 初始化远程监控监听线程:InitDeamonRemoteMonitor() l 执行守护线程:RunDaemon 3.2 守护线程执行流程函数:BOOL RunDaemon(void),完成进程的启动,如果已经启动的进程退出则再次重启。 for(int i=0;i<glo_iniDaemon.m_iMaxProcess;i++) {//对配置中的每一项进行判断 if(glo_iniDaemon.m_arrEntry.fAutoStart) { glo_lockProcess.Access(); //锁定数据,防止多线程同时修改 if(glo_hProcess == NULL) {//进程没有被执行 StartProcess(glo_hProcess,i); } else {//检查线程是否已经退出,如果已经退出则重新启动 CheckProcess(glo_hProcess,i); } glo_lockProcess.LeaveAccess(); //接触数据锁定 } } 3.3 远程监控服务类3.3.1 远程监控连接元素类class CDaemonRmtCtrlEle : public CRmtCtrlElement 记录单个连接的相关信息。 3.3.2 远程监控连接管理类class CDaemonRmtCtrlResMan : public CRmtCtrlResMan 管理所有的连接信息,类中包含有一个CDaemonRmtCtrlEle对象的集合,此外CDaemonRmtCtrlResMan会处理连接信息(CDaemonRmtCtrlEle)集合的同步访问。 3.4 远程监控服务线程线程函数DWORD DaemonRemoteMonitorThread(UINT uHandle)。 在远程监控建立连接后此函数会被作为线程进行创建。然后完成监控处理工作。 3.5 使用到的其他开发包与类3.6 屏幕输出类consoleTxtWnd.h consoleTxtWnd.cpp 3.6.1 资源管理类resManBase.h resManBase.cpp 实现资源管理 resManBaseLock.cpp 实现各种访问锁控制 3.6.2 远程连接管理类rmtCtrlElement.h rmtCtrlElement.cpp 实现对远程连接资源的管理 3.6.3 Socket功能socketFun.h socketFun.cpp
|