如图所示,每次启动都是不一样的英文+数字的进程名
旧代码:
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;
}
求解决办法
我建议可以使用系统API来获取进程的PID,然后根据PID来获取进程的名称。
下面是一个获取进程和进程名的程序代码,自己可以灵活运用在自己的代码中,在C语言中也可以代用脚本程序,充分结合让你的应用程序更加强壮。
https://blog.csdn.net/weixin_39549312/article/details/117174078