В общем случае, насколько я понимаю, файловый дескриптор ссылается на файловую и-ноду в которой имени файла нету. Т.е. получается, что имея дескриптор об имени ничего не узнать ? Может тогда как-то через таблицу открытых файлов процесса ?
А что хардлинки? Хардлинки просто ссылаются на один inode. При открытии двух хардлинков - получим два дескриптора. inode не идентифицирует однозначно файл в системе. Т.к. у вас может быть смонтировано несколько ФС (пусть даже одинаковых).
ps:
Открытый дескриптор определяет структуру file в которой есть dentry и mnt. Вот эти два поля однозначно идентифицируют файл в текущем namespace. Этот открытый дескриптор есть в /proc/<pid>/fd.
Вообщем, в первом же ответе на пост все сказано.
>Открытый дескриптор определяет структуру file в которой есть dentry и mnt. Вот эти два поля однозначно идентифицируют файл в текущем namespace. Этот открытый дескриптор есть в /proc/<pid>/fd.
"Однозначно" могут и не идентифицировать, если файл не принадлежит namespace.
Файл не принадлежит неймспейсу никогда. Неймспейсу принадлежат точки монтирования, а файл - файловой системе. Один и тот же файл можно видеть из разных мест, из процессов с разными namespace, у этого файла может быть разный путь /bla1/bla1/file или /bla2/bla2/file, но это будет ОДИН И ТОТ ЖЕ файл, с тем же inode. И в каждом случае dentry и mnt будут разными и однозначно определят этот файл.