1

我正在寻找一种替代方法来读取 /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() 等。

4

1 回答 1

2

还有其他地方可以获取信息 - 例如/proc/<pid>/maps- 但如果您不被允许访问,/proc/<pid>/exe那么您也不允许访问这些信息。

没有任何结局——这是 Android 安全模型的结果,每个应用程序都有自己的 UID。

于 2010-09-15T04:52:53.120 回答