int get_process_pid(const char* chr)
{
char cmd[64] = { 0 };
int pid = 0;
FILE *file = NULL;
char buff[64] = { 0 };
sprintf(cmd, "ps -ef | grep %s | grep -v grep | awk '{print $1}'", chr);
file = popen(cmd, "r");
if (!file) {
printf("cannot open it\n");
return -1;
}
fgets(buff, sizeof(buff), file);
pid = atoi(buff);
fclose(file);
return pid;
}
int get_pid_by_name(const char* task_name)
{
int pid_value = -1;
DIR *dir;
struct dirent *ptr;
FILE *fp;
char filepath[512] = { 0 };
char cur_task_name[512] = { 0 };
char buf[1024] = { 0 };
dir = opendir("/proc");
if (NULL != dir) {
while((ptr = readdir(dir)) != NULL) {
if((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0))
continue;
if(DT_DIR != ptr->d_type)
continue;
sprintf(filepath, "/proc/%s/status", ptr->d_name);
fp = fopen(filepath, "r");
if(NULL != fp) {
if(fgets(buf, 1023, fp) == NULL) {
fclose(fp);
continue;
}
sscanf(buf, "%*s %s", cur_task_name);
if (!strcmp(task_name, cur_task_name)) {
printf("PID:%s\n", ptr->d_name);
pid_value = atoi(ptr->d_name);
}
fclose(fp);
}
}
closedir(dir);
} else {
printf("open proc failed!\n");
}
return pid_value;
}