Получение полного пути работающего PID с C / C ++ без использования системной функции (Linux)

Поэтому я хочу иметь возможность получить полный путь запущенного процесса (для которого у меня есть идентификатор процесса) без использования каких-либо команд в командной строке. У кого-нибудь есть идеи как это сделать?

У меня есть PID, есть ли функция, которая, передавая PID, может вернуть полный путь этого процесса в виде символа *?

1

Решение

использование 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,

6

Другие решения

человек 3 настоящий путь

Это расширяет все символические ссылки и каталог относительно токена. К сожалению, это специфично для GNU, я использую его с -std=gnu99, лайк printf("%s\n", realpath("/proc/self/exe", NULL)),

0

По вопросам рекламы [email protected]