All rights reserved. The Berkeley software License Agreement
specifies the terms and conditions for redistribution.
@(#)access.2 6.1 (Berkeley) 05/09/85
#include <sys/file.h>#define R_OK 4 /* test for read permission */ #define W_OK 2 /* test for write permission */ #define X_OK 1 /* test for execute (search) permission */ #define F_OK 0 /* test for presence of file */
accessible = access(path, mode) int accessible; char *path; int mode;
The real user ID and the group access list (including the real group ID) are used in verifying permission, so this call is useful to set-UID programs.
Notice that only access bits are checked. A directory may be indicated as writable by access , but an attempt to open it for writing will fail (although files may be created there); a file may look executable, but execve will fail unless it is in proper format.
15 [ENOTDIR] A component of the path prefix is not a directory.
15 [ENOENT] The argument path name was too long.
15 [ENOENT] Read, write, or execute (search) permission is requested for a null path name or the named file does not exist.
15 [EPERM] The argument contains a byte with the high-order bit set.
15 [ELOOP] Too many symbolic links were encountered in translating the pathname.
15 [EROFS] Write access is requested for a file on a read-only file system.
15 [ETXTBSY] Write access is requested for a pure procedure (shared text) file that is being executed.
15 [EACCES] Permission bits of the file mode do not permit the requested access; or search permission is denied on a component of the path prefix. The owner of a file has permission checked with respect to the ``owner'' read, write, and execute mode bits, members of the file's group other than the owner have permission checked with respect to the ``group'' mode bits, and all others have permissions checked with respect to the ``other'' mode bits.
15 [EFAULT] Path points outside the process's allocated address space.