Linux下C语言实现查看进程是否存在
来源:互联网 发布:mac怎么下载穿越火线 编辑:程序博客网 时间:2024/06/04 22:23
基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了。
示例一
下面这个示例从网上找的,根据个数来判断进程是否存在
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=program&Number=543154&fpart=all
#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); }
示例二
int detect_process(char * process_name) { FILE *ptr; char buff[512]; char ps[128]; sprintf(ps,"ps -e | grep -c ' %s</p>",process_name); strcpy(buff,"ABNORMAL"); if((ptr=popen(ps, "r")) != NULL) { while (fgets(buff, 512, ptr) != NULL) { if(atoi(buff)>=2) { pclose(ptr); return CONFLICT; } } } if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/ return ERROR; pclose(ptr); return NOERROR; }
0 0
- Linux下C语言实现查看进程是否存在
- Linux下C语言实现查看进程是否存在
- Linux下C语言实现查看进程是否存在
- c语言实现查看进程是否存在
- Linux C语言检查进程是否存在
- Linux C语言 如何判断该进程是否还存在
- C语言判断某进程是否存在
- Linux下检测进程是否存在
- Linux下检测进程是否存在
- linux下php检查进程是否存在
- Linux下检测进程是否存在
- Linux下检测进程是否存在
- Linux下C语言多进程实现
- C语言判断当前某一个进程是否存在
- Linux下判断是否存在多个同名进程
- Linux下判断进程是否存在的好方法
- Linux下判断进程是否存在的好方法
- Linux下用C语言实现守护进程
- windows系统错误提示系统资源不足解决措施
- [bash]read命令
- Android 关于post、get、pull、delete解析分析
- 实例学习gcc+gdb+make
- 【 Codeforces Round #268 (Div. 1)】B.Two Set【dfs找增广路】
- Linux下C语言实现查看进程是否存在
- leetcode-Rotate List
- A JSONObject text must begin with '{' at character 1 of 1
- Linux 下给项目搭建svn环境
- 数学之路-数据分析进阶-多变量数据分析(3)
- C#内存回收
- Entity Framework 并发处理
- Linux——线程同步
- 树莓派学习笔记(1):入手树莓派