在编程的时候有时需要知道特定程序有没有在运行,它有几个进程或线程在运行,此刻就可以用下面的代码实现。主要的原理就是执行ps -a命令然用 grep 查找这个程序名,使用wc -l统计它的个数。grep -v grep和grep -v PPID的意思是略过grep自己。
int count_task(const char *task)
{
FILE* fp;
char buf[128] = {0};
int num = 0;
if(!task)
return -1;
sprintf(buf, "ps -a | grep %s |grep -v grep|grep -v PPID|wc -l",task);
fp = popen(buf, "r");
if (!fp)
return 0;
memset(buf, 0x0, sizeof(buf));
while(fgets(buf, sizeof(buf), fp) != NULL)
{
num = atoi(buf);
}
pclose(fp);
return num;
}