在linux怎么知道一个指定的“进程名”有几个在运行了呢?
下面这下例子演示了这个过程,计数函数为:getProcessCount()
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 获取进程数量
int getProcessCount(char *processname)
{
FILE *ptr;
char buff[512], ps[128];
int count = -1;
sprintf(ps, "ps -e|grep -c ' %s$'", processname); // 对指定的进程名计数(求个数)
if((ptr = popen(ps, "r")) != NULL)
{
if(fgets(buff, 512, ptr) != NULL)
{
count = atoi(buff);
}
}
pclose(ptr);
return count;
}
int main(int argc, char *argv[])
{
if(argc == 2)
{
int ret = getProcessCount(argv[1]); // 获取进程数量
printf("Count[%s] = %d\n", argv[1], ret);
}
else
{
printf("Usage error!\n");
}
return 0;
}
如果要判断某个进程是否存在的话,只要判断这个进程的个数就知道了。小于1就是不存在,否则存在。
参考了网上的代码:http://blog.csdn.net/lanmanck/article/details/6021878
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;
}