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)