COHERENT manpages
This page displays the COHERENT manpage for access() [Check if a file can be accessed in a given mode].
List of available manpages
Index
access() -- System Call (libc)
Check if a file can be accessed in a given mode
#include <unistd.h>
int access(filename, mode) char *filename; int mode;
access() checks whether a file or directory can be accessed in the mode you
wish. filename is the full path name of the file or directory you wish to
check. mode is the mode in which you wish to access filename, as follows:
F_OK File exists
R_OK Read a file
W_OK Write into a file
X_OK Execute a file
The header file unistd.h defines these values, which may be logically
combined to produce the mode argument.
If mode is F_OK, access() tests only whether filename exists, and whether
you have permission to search all directories that lead to it.
access() returns zero if filename can be accessed in the requested mode,
and a nonzero value if it cannot. Note that the return value is the
opposite of the intuitive value, i.e., zero means success rather than
failure.
access() uses the real user id and real group id (rather than the effective
user id and effective group id), so set user id programs can use it.
Example
The following example checks if a file can be accessed in a particular
manner.
#include <unistd.h>
#include <stdio.h>
main(argc, argv)
int argc; char *argv[];
{
int mode;
extern int access();
if (argc != 3) {
fprintf(stderr, "usage: acc dir_name/file_name mode\n");
exit(EXIT_FAILURE);
}
switch (*argv[2]) {
case 'x':
mode = X_OK;
break;
case 'w':
mode = W_OK;
break;
case 'r':
mode = R_OK;
break;
case 'f':
mode = F_OK;
break;
default:
fprintf(stderr, "Bad mode. Modes: f, x, r, w\n");
exit(EXIT_FAILURE);
break;
}
if (access(argv[1], mode))
printf("file %s cannot be found in mode %d\n", argv[1], mode);
else
printf("file %s is accessible in mode %d\n", argv[1], mode);
exit(EXIT_SUCCESS);
}
See Also
libc,
path(),
unistd.h
POSIX Standard, §5.6.3
Notes
When the superuser root executes access(), it always returns
readable/writable/executable for any file that exists, regardless of
permissions.
Note that access() used to be declared in header file <access.h>. It
is now prototyped in header file <unistd.h>, to comply with the POSIX
standard. <access.h> is obsolete and has been dropped from COHERENT
beginning with release 4.2.









