如图所示,每次启动都是不一样的英文+数字的进程名
旧代码:
int cmp_char(const void *a1, const void *a2)
{
return *(char *)a2 - *(char *)a1;
}
int getPID1(const char *a1)
{
int id = 0;
DIR *dir;
FILE *fp;
char filename[64];
char cmdline[18];
size_t v1;
size_t v2;
char dest[18];
char base[64];
strcpy(dest, a1);
v1 = strlen(dest);
qsort(dest, v1, 1, cmp_char);
struct dirent *entry;
dir = opendir("/proc");
while ((entry = readdir(dir)) != NULL)
{
id = atoi(entry->d_name);
if (id)
{
sprintf(filename, "/proc/%d/cmdline", id);
fp = fopen(filename, "r");
if (fp)
{
fgets(cmdline, sizeof(cmdline), fp);
fclose(fp);
v2 = strlen(cmdline);
qsort(cmdline, v2, 1, cmp_char);
if (!strcmp(dest, cmdline))
{
return id;
}
}
}
}
closedir(dir);
puts("获取PID失败");
return 0;
}
求解决办法