Поэтому я хочу иметь возможность получить полный путь запущенного процесса (для которого у меня есть идентификатор процесса) без использования каких-либо команд в командной строке. У кого-нибудь есть идеи как это сделать?
У меня есть PID, есть ли функция, которая, передавая PID, может вернуть полный путь этого процесса в виде символа *?
использование 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
,
Это расширяет все символические ссылки и каталог относительно токена. К сожалению, это специфично для GNU, я использую его с -std=gnu99
, лайк printf("%s\n", realpath("/proc/self/exe", NULL))
,