Получение номера inode неоткрытого файла из пути - PullRequest
2 голосов
/ 12 марта 2011

Есть ли способ получить номер индекса файла, который еще не был открыт.Я хотел бы сделать это изнутри функции переменного тока

С уважением, Lipika

Ответы [ 3 ]

3 голосов
/ 12 марта 2011

Используйте stat (2) (который принимает путь к файлу) и проверьте поле st_ino.Обратите внимание, что кто-то может переместить или удалить файл между временем, когда вы звоните stat, и когда вам удастся что-либо сделать с информацией.

1 голос
/ 12 марта 2011

Если у вас нет очень жесткого контроля над разрешениями для каждого элемента пути к файлу, то, что вы пытаетесь сделать, почти наверняка неправильно.Между любыми двумя операциями, связанными с доступом к файлу по пути, существует условие состязания, то есть номер инода, который вы получаете, потенциально неверен даже до того, как вызов (stat или readdir), который его вам вернет, вернется.Почему вы не хотите открыть файл?

1 голос
/ 12 марта 2011

По сути, ответ можно найти в этом вопросе:

Как мне прочитать каталог как файл в Unix?

Вы должны прочитать каталогкоторый содержит запись файла.Эта запись содержит номер индекса.

...