access - determine accessibility of a file
int access(const char *path, int amode);
The access() function checks the file named by the pathname
pointed to by the path argument for accessibility according
to the bit pattern contained in amode, using the real user
ID in place of the effective user ID and the real group ID
in place of the effective group ID. This allows a setuid
process to verify that the user running it would have had
permission to access this file.
The value of amode is either the bitwise inclusive OR of the
access permissions to be checked (R_OK, W_OK, X_OK) or the
existence test, F_OK.
These constants are defined in <unistd.h> as follows:
R_OK Test for read permission.
W_OK Test for write permission.
X_OK Test for execute or search permission.
F_OK Check existence of file
See intro(2) for additional information about "File Access
If any access permissions are to be checked, each will be
checked individually, as described in intro(2). If the pro-
cess has appropriate privileges, an implementation may indi-
cate success for X_OK even if none of the execute file per-
mission bits are set.
If the requested access is permitted, access() succeeds and
returns 0. Otherwise, -1 is returned and errno is set to
indicate the error.
The access() function will fail if:
Permission bits of the file mode do not permit the
requested access, or search permission is denied on a
component of the path prefix.
path points to an illegal address.
EINTR A signal was caught during the access() function.
ELOOP Too many symbolic links were encountered in resolving
The length of the path argument exceeds PATH_MAX, or a
pathname component is longer than NAME_MAX while
_POSIX_NO_TRUNC is in effect.
A component of path does not name an existing file or
path is an empty string.
path points to a remote machine and the link to that
machine is no longer active.
A component of the path prefix is not a directory.
EROFS Write access is requested for a file on a read-only
The access() function may fail if:
The value of the amode argument is invalid.
Pathname resolution of a symbolic link produced an
intermediate result whose length exceeds PATH_MAX.
Write access is requested for a pure procedure (shared
text) file that is being executed.
Additional values of amode other than the set defined in the
description may be valid, for example, if a system has
extended access controls.
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| MT-Level | Async-Signal-Safe |
intro(2), chmod(2), stat(2), attributes(5)
Man(1) output converted with