android -/proc/PID/exe 符号链接(symbolic link)的替代方案,用于通过 PID 检索另一个进程的完整路径

标签 android linux path pid

我正在寻找一种替代方法来读取/proc/PID/exe 符号链接(symbolic link),以获取 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()等

最佳答案

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

没有办法绕过它 - 这是 Android 安全模型的结果,其中每个应用都有自己的 UID。

关于android -/proc/PID/exe 符号链接(symbolic link)的替代方案,用于通过 PID 检索另一个进程的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714371/

相关文章:

linux - 汇编程序段失败

java - JNI Linux 段错误

c++ - BOOST_FILESYSTEM_VERSION 2 path.native_file_string() 的 BOOST_FILESYSTEM_VERSION 3 模拟是什么?

windows - 为什么 Windows 上的程序通常不将自己添加到 PATH 变量中?

java - 如何存档(使用 Zip)到多个输出文件

java - Android View getWidth方法总是返回0

java - Android - fragment 启动但不显示内容

java - LibGDX 如何在已有值(value)的基础上增加值(value)?

linux - 在 shell 脚本中计算平均值时如何处理缺失值?

miktex 和 pandoc 的相对系统路径 - 打包为 Windows 桌面应用程序的 Shiny 应用程序