守护进程如何实现监视,一发现自己异常退出就重新启动
C/C++代码
STARTUPINFO si; PROCESS_INFORMATION pi; //进程信息: ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); do{ // 创建子进程,判断是否执行成功 if(!CreateProcess( NULL,"xxx.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) { return; } // 等待知道子进程退出... WaitForSingleObject( pi.hProcess, INFINITE);//检测进程是否停止 //子进程退出 //关闭进程和句柄 CloseHandle(pi.hProcess); CloseHandle(pi.hThread); }while(true);//如果进程推出就再次执行方法
perl脚本
while true do ps -ef|grep -v grep|grep yourexe if [ $? -ne 0 ]; then 重启你的程序 fi sleep 10 done
shell脚本
while( 1 ) { if( kill(pid_to_be_check, 0) < 0 ) system("重启命令"); sleep(10); }
kill() 并不是一定会像它的名字那样来杀进程。。
第二个参数为0,表示仅仅检测进程是否存在
那个pid_to_be_check 你需要通过其他途径获取