eaccess()

Check to see if the effective user ID can access a file or directory

Synopsis:

#include <libgen.h>
#include <unistd.h>

int eaccess( const char * path,
             int amode );

Arguments:

path
The path to the file or directory that you want to access.
amode
The access mode you want to check. This must be either:
  • F_OK — test for file existence.

or a bitwise OR of the following access permissions to be checked, as defined in the header <unistd.h>:

  • R_OK — test for read permission.
  • W_OK — test for write permission.
  • X_OK — for a directory, test for search permission. Otherwise, test for execute permission.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The eaccess() function checks to see if the file or directory specified by path exists and can be accessed with the file access permissions given by amode. It's similar to access(), but eaccess() uses the effective user ID and effective group ID instead of the real ones.

Returns:

0
The file or directory exists and can be accessed with the specified mode.
-1
An error occurred (errno is set.)

Errors:

EACCES
The permissions specified by amode are denied, or search permission is denied on a component of the path prefix.
EINTR
This function was interrupted by a signal.
EINVAL
An invalid value was specified for amode.
ELOOP
Too many levels of symbolic links or prefixes.
ENAMETOOLONG
The length of the path string exceeds PATH_MAX, or a pathname component is longer than NAME_MAX.
ENOENT
A component of the path isn't valid.
ENOSYS
The eaccess() function isn't implemented for the filesystem specified in path.
ENOTDIR
A component of the path prefix isn't a directory.
EROFS
Write access was requested for a file residing on a read-only file system.

Classification:

Unix

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes