PID
を使用してプロセスの を取得できることは知っていps
ますが、そのプロセスの完全なパスを見つけるにはどうすればよいですか?
質問する
17090 次
4 に答える
19
OS X には libproc ライブラリがあり、さまざまなプロセス情報を収集するために使用できます。特定の PID の絶対パスを見つけるには、次のコードを使用できます。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <libproc.h>
int main (int argc, char* argv[])
{
pid_t pid; int ret;
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
if ( argc > 1 ) {
pid = (pid_t) atoi(argv[1]);
ret = proc_pidpath (pid, pathbuf, sizeof(pathbuf));
if ( ret <= 0 ) {
fprintf(stderr, "PID %d: proc_pidpath ();\n", pid);
fprintf(stderr, " %s\n", strerror(errno));
} else {
printf("proc %d: %s\n", pid, pathbuf);
}
}
return 0;
}
コンパイルして実行する例 (上記のコードは pathfind.c に保存されています。32291 は、パス情報を見つけようとしているプロセスの pid です):
$ cc pathfind.c -o pathfind
$ ./pathfind 32291
proc 32291: /some/path/your-binary-app
このブログ投稿を参照してください: http://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid/
于 2013-02-11T04:37:13.857 に答える
13
1つのソリューションは、次のものを使用できます。
which `ps -o comm= -p $PID`
$PID は、確認するプロセスの pid です。OS X 10.8.2 でテスト済み。
于 2013-02-11T04:40:47.890 に答える
-7
これを試して:
sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk '{print $1}')/exe
ここで、$ PROCESS_NAMEは、チェックするプロセスの名前です。
于 2013-02-11T04:44:23.400 に答える