>Здравствуйте, уважаемые знатоки! >Помогите мне найти правильное решение проблемы: >я знаю дескриптор файла (тот самый, который создается при помощи open(), create(), >dup()и т.п.), теперь мне нужно определить все свойства файла, которому соответствует >этот дескриптор. Функция fstat() возвращает структуру stuct stat, из которой можно >установить номер файлового индекса (поле st_ino), тип файла, права доступа и >кое-что еще. Но как зная номер файлового индекса получить доступ к >структуре struct inode? Как определить полное имя файла? Что-то я никак >не могу дойти. Дескриптор процесс получает как унаследованный от своего родителя, >т.е. никаких дополнительных данных нет. Работаю в режиме пользователя Как уже было сказано, в общем случае никак. Однако, в определенных случаях можно посмотреть на что указывает ссылка /proc/self/fd/<значение_дескриптора> с помощью readlink(). Результат будет - полный путь к файлу. Если файл открыт и удален, без закрытия, там же будет приписка "(Deleted)". Есс-но это будет корректно работать в пределах линуха. Да, кстати, у открытого и удаленного файла нет пути вообще, и имени нет, но дескриптор валиден и валидны запись и чтение в него (и это нормально). Соответственно как в таком случае возможно в общем случае получение пути который был на момент открытия? - почти никак :)
|