简单进程监控

以前做过ATM机项目,除了最基本的逻辑功能,比如取款,查询!转账等,虽然这些很重要,但是有更重要的一个事情,那就是监控,对ATM运行程序的监控,对于ATM状态的监控,

以及对于ATM硬件的监控。这些都是实时的,需要把这些信息发回给银行服务器系统,这样银行才好进行维护。银行服务器这段会根据状态把故障级别进行设置,例如错误就报红色,

警告就报黄色,正常就白色。那么银行服务器怎么收到这个状态的呢,外国银行有个ATM协议,用来规则包的数据字段的类型,用处,以及取值,每个ATM机器部件都有自己

的协议包规则,客户端只要获取到硬件的状态或者程序的运行状态,然后按照协议规定,把相应的值进行填充,发送给服务器端,服务器端就会去解析,然后进行报警预告。

现在就简单实现一下监控程序的运行状态,整个流程是这样的,获取程序的运行状态,例如程序是否异常停止。获取程序日志信息,然后把该信息写入数据库,然后与服务器交互的程序去解析日志,把相应的值发给另外一端的警告服务器,服务器收到后进行预警。

现在就简单实现获取要监控的所有程序的进程信息,看进程是否存在

int FindProStat(const char *szProPath)
{
FILE *pf =NULL;
char szProExe[50] = { 0 };
char szTmpProPath[BUF500] = { 0 };
char cmd[50]={0};
int ireturn = -1;

strcpy(cmd, "find /proc -maxdepth 3 -type l -name \"exe\" 2>/dev/null >proexe.txt");

if(system(cmd)<0)
{
return (-1);
}

if (NULL == (pf = fopen("proexe.txt", "r")))
{
return (-1);
}

while (NULL != fgets(szProExe, sizeof(szProExe) / sizeof(szProExe[0]), pf))
{
szProExe[strlen(szProExe)-1]=0;
memset(szTmpProPath,0,sizeof(szTmpProPath));
int rslt = readlink(szProExe, szTmpProPath, sizeof(szTmpProPath) - 1); //获取进程的路径
if (rslt < 0 || (rslt >= (sizeof(szProPath) - 1)))
{
continue;
}
ireturn = strcmp(szTmpProPath, szProPath);//与入参进行比较
if (0 == ireturn)
{
fclose(pf);
return 0;
}
}
fclose(pf);
return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值