Linux 下使用C++监测某一进程的状态

  想要做一个简单的守护进程,就是监测系统中其它进程是否存在,若存在则认为该进程运行中,若不存在,则认为该进程挂掉。当然这样简单的判断很粗糙,先从简单的开始吧
  例程转自博客:http://m.blog.youkuaiyun.com/buhuizheyangba/article/details/7278631
  例程:

#include<unistd.h> 
#include<sys/types.h> 
#include<sys/wait.h> 
#include<stdio.h> 
#include<stdlib.h> 
#include<fcntl.h> 
#include<limits.h> 

#define BUFSZ PIPE_BUF 

void err_quit(char *msg) 
{ 
perror(msg); 
exit(EXIT_FAILURE); 
} 

int main(int argc, char *argv[]) 
{ 
FILE* fp; 
int count; 
char buf[BUFSZ]; 
char command[150]; 
if(argc != 2) 
{
printf("USAGE: example <process name>\n"); 
exit(EXIT_SUCCESS); 
} 
else
sprintf(command, "ps -C %s|wc -l", argv[1] ); 

if((fp = popen(command,"r")) == NULL) 
err_quit("popen"); 

if( (fgets(buf,BUFSZ,fp))!= NULL ) 
{
count = atoi(buf); 
if((count - 1) == 0) 
printf("%s not found\n",argv[1]); 
else
printf("process : %s total is %d\n",argv[1],(count - 1)); 
} 
pclose(fp); 
exit(EXIT_SUCCESS); 
} 

  这里面的核心是popen函数,使用该函数就相当于在Terminal中输入命令一样,比较人性化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值