所以我希望能够在不使用命令行上的任何命令的情况下获得正在运行的进程的完整路径(我有进程ID)。任何人对如何做到这一点都有任何想法?
我有PID,是否有任何函数通过传递PID可以返回该进程的完整路径作为char *?
答案 0 :(得分: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
。
答案 1 :(得分:0)
这会扩展所有符号链接和目录相对令牌。遗憾的是,它是特定于GNU的,我将其与-std=gnu99
一起使用,例如printf("%s\n", realpath("/proc/self/exe", NULL))
。