READLINK(2) System Calls READLINK(2)
NAME
readlink - read the contents of a symbolic link
SYNOPSIS
#include <unistd.h>
ssize_t readlink(
const char *restrict path,
char *restrict buf,
size_t bufsiz);
ssize_t readlinkat(
int fd,
const char *restrict path,
char *restrict buf,
size_t bufsiz);
DESCRIPTION
The
readlink() and
readlinkat() functions place the contents of the
symbolic link referred to by
path in the buffer
buf which has size
bufsiz. If the number of bytes in the symbolic link is less than
bufsiz,
the contents of the remainder of
buf are left unchanged. If the
buf argument is not large enough to contain the link content, the first
bufsize bytes are placed in
buf.
The
realinkat() function behaves similarly to
readlink(); however, when
path is a relative path, it is resolved relative to the directory
referred to by
fd. To use the current working directory,
fd should be the
special value
AT_FDCWD.
RETURN VALUES
Upon successful completion,
readlink() and
readlinkat() return the count
of bytes placed in the buffer. Otherwise, they returns
-1, leave the
buffer unchanged, and set
errno to indicate the error.
ERRORS
The
readlink() and
readlinkat() functions will fail if:
EACCES Search permission is denied for a component of the path
prefix of
path.
EFAULT path or
buf points to an illegal address.
EINVAL The
path argument names a file that is not a symbolic
link.
EIO An I/O error occurred while reading from the file system.
ENOENT A component of
path does not name an existing file or
path is an empty string.
ELOOP A loop exists in symbolic links encountered during
resolution of the
path argument.
ENAMETOOLONG The length of
path exceeds {
PATH_MAX}, or a pathname
component is longer than {
NAME_MAX} while
_POSIX_NO_TRUNC is in effect.
ENOTDIR A component of the path prefix is not a directory. For
readlinkat(), if
path is a relative path and
fd refers to
a valid file descriptor which is not a directory.
ENOSYS The file system does not support symbolic links.
The
readlinkat() function will fail if:
EBADF The
path argument is a relative path and
fd is not a
valid, open file descriptor or the special value
AT_FDCWD.
The
readlink() function may fail if:
EACCES Read permission is denied for the directory.
ELOOP More than {
SYMLOOP_MAX} symbolic links were encountered
in resolving
path.
ENAMETOOLONG As a result of encountering a symbolic link in resolution
of the path argument, the length of the substituted
pathname string exceeded {
PATH_MAX}.
USAGE
Portable applications should not assume that the returned contents of the
symbolic link are null-terminated.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Standard |
+--------------------+-------------------+
|MT-Level | Async-Signal-Safe |
+--------------------+-------------------+
SEE ALSO
stat(2),
symlink(2),
attributes(7),
standards(7) December 23, 2014
READLINK(2)