Linux 下检测线程个数:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int detect_process(char *name)
{
int process_num = 0; // 存储name线程的个数
FILE *ptr = NULL;
char buff[256] = {0};
char filename[32] = {0};
sprintf(filename, "ps"); // PC下的linux需用: ps -A
if((ptr = popen(filename, "r")) != NULL) {
while(fgets(buff, 256, ptr) != NULL) {
printf("==: %s", buff);
if (process_num > 0)
printf("%s", buff);
if (strstr(buff, name) != NULL)
process_num++;
memset(buff, 0, 256);
}
} else {
printf("open failed\n");
//sleep(5);
}
printf("process_num = %d\n", process_num);
if(ptr != NULL)
pclose(ptr);
ptr = NULL;
return process_num;
}
int main(int argc, char **argv)
{
if (argc < 2) {
printf("usage: %s your filename (please use full path!)\n", argv[0]);
return -1;
}
printf("Start detect process~~~~~~\n");
detect_process(argv[1]);
return 0;
}