Linux下C语言实现查看进程是否存在
来源:互联网 发布:苹果网络锁查询 编辑:程序博客网 时间:2024/06/05 00:12
Linux下C语言实现查看进程是否存在
基本思路是先定义一个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);
}
示例二
这个麻烦一点,从ps的返回结果获取PID,再用kill查看是否存在
http://hi.baidu.com/backylee/blog/item/de366ca8d843cabdcb130c9b.html
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
int main()
{
FILE *pstr;
char cmd[128],buff[512];
pid_t pID;
int pidnum;
char *name= "Test";/*进程名*/
char *p = NULL;
int ret=3;
memset(cmd,0,sizeof(cmd));
sprintf(cmd, "ps -ef|grep %s",name);
pstr=popen(cmd, "r");
if(pstr==NULL)
{ return 1; }
memset(buff,0,sizeof(buff));
fgets(buff,512,pstr);
printf("%s\n",buff);
p=strtok(buff, " ");
p=strtok(NULL, " ");
pclose(pstr); //这句是否去掉,取决于当前系统中ps后,进程ID号是否是第一个字段
if(p==NULL)
{ return 1; }
//printf( "pid:%s\n",p);
if(strlen(p)==0)
{ return 1; }
if((pidnum=atoi(p))==0)
{ return 1; }
printf("pidnum: %d\n",pidnum);
pID=(pid_t)pidnum;
ret=kill(pID,0);
printf("ret= %d \n",ret);
if(0==ret)
printf("process: %s exist!\n",name);
else
printf("process: %s not exist!\n",name);
return 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语言实现守护进程
- 页面包含inc文件、用户控件、普通html/htm文件
- 5年内要看的计算机的书
- 一生的知识积累,自学的起码占90%
- IOS 使用自定义字体的方法 (待续)
- Android工具HierarchyViewer代码导读(4) -- 前台代码
- Linux下C语言实现查看进程是否存在
- mfc 给菜单添加相应的响应函数
- 在数据库里如何将毫秒转换成date格式
- LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数
- 规划篇
- 34.windbg-k*实例分析(查看调用栈分析)
- 程序员经典语录
- dropdownlist 启用了autopostback但是不执行selectedindexchanged事件
- boost 核心类库