实现服务器崩溃后自动重启,只需添加一个守护进程即可。
守护进程实现
新建 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函数入口处添加