【问题标题】:Alternative to /proc/PID/exe symlink for retrieving another processes full path via PID替代 /proc/PID/exe 符号链接,用于通过 PID 检索另一个进程的完整路径
【发布时间】:2011-04-12 11:28:20
【问题描述】:

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

【问题讨论】:

    标签: android linux path pid


    【解决方案1】:

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

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

    【讨论】:

    • 这适用于 /proc FS 中的某些内容,但其他我可以阅读。此外,这并不一定意味着没有其他方法可以使用。
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2013-01-25
    相关资源
    最近更新 更多