Проверить наличие прав доступа к файлу или директории (расширенная версия)
#include <libgen.h>
#include <unistd.h>
int eaccess( const char *path,
int amode );
- path
- Путь к файлу или директории, которые будет проверены.
- amode
- Режим доступа, который необходимо проверить. Он должен быть одним из следующих:
- F_OK
- проверка на существование файла.
или побитовое ИЛИ для следующих разрешений доступа, объявленных в заголовочном файле <unistd.h>
, которые будут проверяться: - R_OK
- проверка на разрешение к чтению.
- W_OK
- проверка на разрешение к записи.
- X_OK
- проверка на разрешение поиска в директории или проверка на разрешение выполнения файла.
libc
Функция eaccess() - расширенная версия функции access(). Она проверяет, существуют ли файл или директория, указанные в path, и имеют ли они необходимый режим доступа, указанный в amode. В отличие от access(), функция использует эффективный ID пользователя и эффективный ID группы.
- 0
- Файл или директория существуют и имеют запрашиваемый режим доступа.
- -1
- Возникла ошибка. Код ошибки записан в errno.
- EACCES
- Режимы доступа, указанные в amode, запрещены, либо в какой-либо части пути запрещен поиск.
- EINVAL
- Для amode указано некорректное значение.
- ELOOP
- Слишком много уровней символических ссылок или префиксов.
- ENAMETOOLONG
- Длина строки path превышает
PATH_MAX
, или часть строки пути длиннее, чем NAME_MAX
. - ENOENT
- Часть строки пути имеет некорректное значение.
- ENOSYS
- Функция eaccess() не реализована для файловой системы, указанной в path.
- ENOTDIR
- Часть префикса пути не является директорией.
- EROFS
- Для файла, расположенного в файловой системе только для чтения, запрошен доступ к записи.
Unix
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Да
- В потоке
- Да
access(), chmod(), errno, fstat(), open(), stat()
Предыдущий раздел: Описание API системной библиотеки