eaccess()

Проверить наличие прав доступа к файлу или директории (расширенная версия)

Прототип:

#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 системной библиотеки