Получение пути из файлового дескриптора или FILE *? - PullRequest
3 голосов
/ 10 сентября 2009

Есть ли способ получить информацию о пути из файлового дескриптора или указателя FILE?

Мне известно, что эти данные не всегда могут быть актуальны / полезны для случая, когда файловый дескриптор представляет собой сокет, канал и т. Д.

Ответы [ 3 ]

4 голосов
/ 10 сентября 2009

Я не верю, что есть какой-либо портативный способ, но, например, в Linux вы можете вызвать readlink на "/proc/self/fd/ fileno ", и ядро ​​даст вам путь, если он может, или один из различных типов смешных строк, если нет.

3 голосов
/ 10 августа 2010

Если вам посчастливилось использовать Mac OS X, вы можете использовать следующий код:

#define _DARWIN_C_SOURCE
#include <sys/fcntl.h>
.
.
.
char pathbuf[PATH_MAX];
if (fcntl(fd, F_GETPATH, pathbuf) >= 0) {
    // pathbuf now contains *a* path to the open file descriptor
}

Обратите внимание, что возвращаемый вами путь не обязательно используется для открытия файла ... Если есть жесткие ссылки, особенно, возвращаемый путь будет a допустимый путь к файлу .

0 голосов
/ 10 сентября 2009

Для файла может быть одно или несколько имен, поэтому нет стандартного способа. Я не уверен, может ли быть что-то конкретное для ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...