Android /Linuxでプロセスのフル パスを取得するための /proc/PID/exe シンボリック リンクを読み取る別の方法を探しています。
その理由は、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() などがあります。