Я пытаюсь получить pid запущенного процесса с packagename, я использую код c в Android Studio. Когда я возвращаю pid на эмуляторе, код дает мне настоящий pid без проблем, но когда я пробую на устройстве 9.0, я получаю -1, и я не знаю, в чем проблема?
int find_pid_of(const char *process_name)
{
int id;
pid_t pid = -1;
DIR *dir;
FILE *fp;
char filename[32];
char cmdline[256];
struct dirent *entry;
if (process_name == NULL)
return -1;
dir = opendir("/proc");
if (dir == NULL)
return -1;
while ((entry = readdir(dir)) != NULL)
{
id = atoi(entry->d_name);
if (id != 0)
{
sprintf(filename, "/proc/%d/cmdline", id);
fp = fopen(filename, "r");
if (fp)
{
fgets(cmdline, sizeof(cmdline), fp);
fclose(fp);
if (strcmp(process_name, cmdline) == 0)
{
/* process found */
pid = id;
break;
}
}
}
}
closedir(dir);
}
int main(){
pid_t pid = find_pid_of("com.anapp.ig");
return pid;
}
Я также даю root права для java при запуске приложения