Книга: Программирование для Linux. Профессиональный подход
8.2. Функция access(): проверка прав доступа к файлу
8.2. Функция access(): проверка прав доступа к файлу
Функция access()
определяет, имеет ли вызывающий ее процесс право доступа к заданному файлу. Функция способна проверить любую комбинацию привилегий чтения, записи и выполнения, а также факт существования файла.
Функция access()
принимает два аргумента: путь к проверяемому файлу и битовое объединение флагов R_OK
, W_OK
и X_OK
, соответствующих правам чтения, записи и выполнения. При наличии у процесса всех необходимых привилегий функция возвращает 0. Если файл существует, а нужные привилегии на доступ к нему у процесса отсутствуют, возвращается -1 и в переменную errno записывается код ошибки EACCES
(или EROFS
, если проверяется право записи в файл, который расположен в файловой системе, смонтированной только для чтения).
Если второй аргумент равен F_OK
, функция access()
проверяет лишь факт существования файла. В случае обнаружения файла возвращается 0, иначе — -1 (в переменную errno
помещается также код ошибки ENOENT
). Когда один из каталогов на пути к файлу недоступен, в переменную errno
будет помещён код EACCES
.
Программа, показанная в листинге 8.1, с помощью функции access()
проверяет существование файла и определяет, разрешен ли к нему доступ на чтение/запись. Имя файла задается в командной строке.
- 11.1. Проверка прав доступа
- Правила творческой лени
- Права для выполнения резервного копирования
- Правильная стратегическая последовательность
- Ничего, кроме правды: поведение потребителей
- Заполнение справочников и каталогов
- Неисправности источника бесперебойного питания
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- 2.1.3. Функция getopt_long()
- Неисправности акустических систем
- Основные "рычаги" управления производительностью
- Права