1

そのため、コマンドラインでコマンドを使用せずに、実行中のプロセス(プロセスIDを持っている)のフルパスを取得できるようにしたいのです。誰かがこれを行う方法について何かアイデアがありますか?

私はPIDを持っていますが、PIDを渡すことで、そのプロセスのフルパスをchar *として返すことができる関数はありますか?

4

2 に答える 2

6

の実行可能ファイルreadlink("/proc/<pid>/exe", buf, bufsize)へのパスを取得するために使用します。<pid>これはLinuxで機能しprocfsますが、利用可能であれば(通常は利用可能です)。

使用例:

int get_exe_for_pid(pid_t pid, char *buf, size_t bufsize) {
    char path[32];
    sprintf(path, "/proc/%d/exe", pid);
    return readlink(path, buf, bufsize);
}

-1失敗時に戻り、を設定しますerrno

于 2012-09-19T23:42:35.563 に答える
0

男3リアルパス

これにより、すべてのシンボリックリンクとディレクトリの相対トークンが展開されます。悲しいことに、それはGNU固有であり、私はそれを-std=gnu99、のように使用しprintf("%s\n", realpath("/proc/self/exe", NULL))ます。

于 2013-11-06T17:45:59.720 に答える