Pike v8.0 release 1738

Method access()


Method access

int access(string path, string|void mode)

Description

access() checks if the calling process can access the file path. Symbolic links are dereferenced.

Parameter mode

The mode specifies the accessibility checks to be performed, and is either not specified or empty, in which case access() just tests if the file exists, or one or more of the characters "rwx".

r, w, and x test whether the file exists and grants read, write, and execute permissions, respectively.

The check is done using the calling process's real UID and GID, rather than the effective IDs as is done when actually attempting an operation (e.g., open(2)) on the file. This allows set-user-ID programs to easily determine the invoking user's authority.

If the calling process is privileged (i.e., its real UID is zero), then an X_OK check is successful for a regular file if execute permission is enabled for any of the file owner, group, or other.

Returns
1

When the file is accessible using the given permissions.

0

When the file is not accessible, in which case errno is set to one of the following values:

EACCESS

Access denied.

ELOOP

Too many symbolic links.

ENAMETOOLONG

The path is too long.

ENOENT

The file does not exist.

ENOTDIR

One of the directories used in path is not, in fact, a directory.

EROFS

The filesystem is read only and write access was requested.

Other errors can occur, but are not directly related to the requested path, such as ENOMEM, etc.

See also

errno(), Stdio.File