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

来源:互联网 发布:loot软件 编辑:程序博客网 时间:2024/05/20 13:10

  想要做一个简单的守护进程,就是监测系统中其它进程是否存在,若存在则认为该进程运行中,若不存在,则认为该进程挂掉。当然这样简单的判断很粗糙,先从简单的开始吧
  例程转自博客:http://m.blog.csdn.net/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); } elsesprintf(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]); elseprintf("process : %s total is %d\n",argv[1],(count - 1)); } pclose(fp); exit(EXIT_SUCCESS); } 

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

原创粉丝点击