/ proc / PID / exe符号链接的替代方法,用于通过PID检索另一个进程完整路径

时间:2010-09-15 03:02:13

标签: android linux path pid

我正在寻找另一种方法来读取/ 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 个答案:

答案 0 :(得分:2)

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

它没有最终结果 - 这是Android安全模型的结果,每个应用程序都有自己的UID。