Альтернатива символической ссылке / proc / PID / exe для получения полного пути других процессов через PID - PullRequest
1 голос
/ 15 сентября 2010

Я ищу альтернативный способ чтения символической ссылки / proc / PID / exe, в котором можно получить полный путь процесса в Android / Linux.

Причина в том, что в Android, / proc / PID / exe для любого процесса, кроме вашего собственного или «самого себя», кажется, ограниченный (запрещенный доступ) доступ.

Я посмотрелтакже в следующее - они читаемы, но, похоже, не работают:

  • / proc / PID / cmdline: редко содержит полный путь
  • / proc / PID /stat: содержит только имя исполняемого файла (без пути)

Сбой кода из-за отклоненного разрешения:

#include <unistd.h>
// ...
char buf[2048];
// "/proc/1234/exe" is of course replaced with a proper PID
ssizet_t len = readlink("/proc/1234/exe", buf, sizeof(buf) - 1);
if(-1 != len) {
  buf[len] = '\0';
  // buf should contain full path
} else {
  // this path always reached for PID's other than my own or
  // /proc/self/exe
}

Должен ли быть альтернативный метод?В Windows, конечно, есть GetModuleFileNameEx, QueryFullProcessImageName () и т. Д.

1 Ответ

2 голосов
/ 15 сентября 2010

Есть и другие места, где вы можете получить информацию - например, /proc/<pid>/maps - но если вам не разрешен доступ к /proc/<pid>/exe, то вам также не разрешен доступ к ним.

Конечный обход - это следствие модели безопасности Android, где каждому приложению присваивается свой UID.

...