实现服务器崩溃后自动重启,只需添加一个守护进程即可。

守护进程实现

新建 main.cpp,编写守护进程逻辑:

#include "windows.h"
                
                int main()
                {
                	  while(1)
                	{
                		STARTUPINFO si;
                
                		PROCESS_INFORMATION pi;
                
                		ZeroMemory( &pi, sizeof(pi) );
                
                		ZeroMemory( &si, sizeof(si) );
                
                		si.cb = sizeof(si);
                
                		CreateProcess( "LiteHttpSrv.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi );
                		WaitForSingleObject( pi.hProcess, INFINITE);
                		Sleep(3000);
                	}
                
                 return 0;
                
                }

该守护进程会持续监控子进程的运行状态。一旦检测到 LiteHttpSrv.exe 崩溃退出,等待 3 秒后自动重新启动。可以在守护进程中加入日志记录逻辑,以便保存崩溃现场信息。

禁用崩溃弹窗

在 LiteHttp 的 main 函数入口处添加以下调用,防止程序崩溃时弹出系统错误对话框,确保守护进程能够正常检测到退出事件:

SetErrorMode(SEM_NOGPFAULTERRORBOX);//main函数入口处添加