【原】喂狗机制Software Dog

本文介绍了为防止进程因长时间执行某功能而未被软件看门狗监控到,实现了一个喂狗自愈机制。通过定时检查,当超过120秒未更新时,调用Feed函数喂狗,确保进程能被正确监控。
摘要由CSDN通过智能技术生成

为了避免进程发呆,或者陷入死循环,但是进程并没有真正挂死,导致软件看门狗没有监控得到进程挂死而重启。

所以,添加一个喂狗自愈机制。

 

time_t lastTime = time(NULL);

 

for(耗时功能处理){

  //喂狗
  if(time(NULL) - lastTime >= 120)
  {
    lastTime = time(NULL);
    Feed(600,"taskman");  //将当前进程喂狗
    LOG(DEBUG_K,"---- Feed dog ----\n");
  }

#ifndef _SOFT_DOG_HPP_
#define _SOFT_DOG_HPP_
 
///
//
//           由于原有方案是被监控程序清计数器,监控程序(软狗)加计数器,这种方案可能导致两个进程同时操作一个文件,出现难以
//           预料的问题。因此,改成一个进程写,另外一个进程读的方案。为实现此目的,特用系统运行时间作为原来的计数器。
//           被监控程序喂狗时,只需要将喂狗时的系统运行时间写入到文件中即可。监控程序在监控时,如发现文件中的系统运行时间与
//           “当前”系统运行时间差大于最大允许时间(dead_seconds), 判断被监控程序出问题(没有及时喂狗),监控程序将杀死被监控程序
/
 
 
 
#include <stdio.h>
#include <unistd.h>
#include <sys/sysinfo.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值