LINUX.ORG.RU

FILE *f;
char buf[100];
char s[100];
...
sprintf (s, "/proc/self/fd/%d", fileno(f));
readlink (s, buf, sizeof(buf));

Murr ★★
()

это ж только в линухе работать будет...

anonymous
()

может fstat? правда я что-то там имени не заметил, если дескриптор терминала - то можно ttyname

grustnoe ★★
()

#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

int fcntl(int filedes, int cmd, ...);
в том смысле, что тип последнего параметра может меняться - ...

системный вызов fcntl работает с открытым файлом, заданным дескриптором файла filedes. Выполняемая функция задается выбором обного из значений параметра cmd из файла <fcntl.h>

anonymous
()

>это ж только в линухе работать будет... Естественно... а переносимых способов нет и быть не может.

>может fstat? ну здрасте... fstat - это операция над inode... откуда там имя возьмётся?

Есть несколько более переносимый, но несколько более некорректный способ - взять номер inode из fstat и начать бегать по диску в поисках dentry, ссылающуюся на inode с этим номером.

Тут есть две проблемы: 1) возможны hard links 2) надо как-то понять на какой файловой системе искать эту dentry...

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.