Как проверить, имеет ли файл разрешения на чтение в C?c прочитать разрешения файла
ответ
Используйте access(2)
в POSIX. В стандарте C лучше всего попытаться открыть его с помощью fopen()
и посмотреть, удастся ли ему это сделать.
Если fopen()
возвращает NULL
, вы можете попробовать использовать errno
различать «Файл не существует» (errno == ENOENT
) и «Отказано в доступе» (errno == EACCES
) случаев - но, к сожалению, эти два errno
значения определяются только POSIX, как Что ж.
(Даже в POSIX, в большинстве случаев лучше всего попытаться открыть файл, а затем посмотреть, почему это не удалось, потому что использование access()
представляет собой очевидное состояние гонки).
Используйте access() функцию:
if (access(pathname, R_OK) == 0)
{
/* It's readable by the current user. */
}
errno
будет установлен в ENOENT
, если файл не существует, или EACCES
, если она существует, но не доступен для текущего пользователя. См. the manual page для получения дополнительных кодов ошибок.
Я фанат использования stat(), себя.
Вопросник спросил, как читать разрешения файла. Функция stat() возвращает разрешения файла. Функция fstat() возвращает разрешения файла с учетом дескриптора открытого файла. – bearvarine
- 1. Прочитать разрешения для каталога в C#
- 2. разрешения создания файла в C
- 3. Прочитать структуру из файла C#
- 4. Прочитать объекты из файла C++
- 5. C++ прочитать число из файла
- 6. Чтение разрешения WMV в C#
- 7. Поиск разрешения файла с помощью C
- 8. Возврат размер файла без разрешения чтения C++
- 9. разрешения для записи файла
- 10. Прочитать случайную строку из файла? C#
- 11. C открыть и прочитать из txt-файла
- 12. Чтобы прочитать содержимое файла в C
- 13. Прочитать данные из файла в C++
- 14. Прочитать определенную часть файла INI C#
- 15. Невозможно прочитать из текстового файла в C++
- 16. Лучший способ прочитать раздел большого файла C#
- 17. Прочитать последнюю строку файла сначала в C
- 18. C - Прочитать матрицу неизвестного размера из файла
- 19. Прочитать двойное значение из файла C#
- 20. C# Невозможно прочитать некоторые символы из файла
- 21. C прочитать определенную строку из файла
- 22. Прочитать последние несколько строк текстового файла? C#
- 23. C++: невозможно прочитать из большого txt-файла
- 24. Прочитать блок файла по блоку в C
- 25. Прочитать ошибку файла C_language
- 26. NSData: прочитать содержимое файла
- 27. Files.move разрешения изменения файла
- 28. chmod. Изменение разрешения файла
- 29. Изменение разрешения состояния файла
- 30. бродячие разрешения synced_folder файла
Я бы использовал fopen(), но мне нужно иметь возможность сказать разницу, является ли файл нечитаемым и не существует ли он –
Использование fopen будет лучше. Поскольку доступ уязвим для атак TOCTOU. (Http://en.wikipedia.org/wiki/TOCTOU). Если это вообще проблема в вашем случае. –
Я бы назвал этот грязный код ... – Tobi