Получить pid запущенного процесса - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь получить 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 при запуске приложения

...