# 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