READLINK(3) Library Functions Manual READLINK(3)

readlinkread the contents of a symbolic link

#include <unistd.h>

int readlink(const char *path, char *buf, size_t bufsize);

The readlink() function places the contents of the symbolic link referred to by path in the buffer buf which has size bufsize . If the number of bytes in the symbolic link is less than bufsize , the contents of the remainder of buf are unspecified.

Upon successful completion, readlink() returns the count of bytes placed in the buffer. Otherwise, it returns a value of -1, leaves the buffer unchanged, and sets errno to indicate the error.

The readlink() function will fail if:

Search permission is denied for a component of the path prefix of path .
The path argument names a file that is not a symbolic link.
An I/O error occurred while reading from the file system.
A component of path does not name an existing file or path is an empty string.
Too many symbolic links were encountered in resolving path .
The length of path exceeds {PATH_MAX}, or a pathname component is longer than {NAME_MAX}.
A component of the path prefix is not a directory.

The function may fail if:

Read permission is denied for the directory.
Pathname resolution of a symbolic link produced an intermediate result whose length exceeds {PATH_MAX}.

None.

Portable applications should not assume that the returned contents of the symbolic link are null-terminated.

The return value may change in a future issue to align with IEEE PASC.

stat(3) , symlink(3) , <unistd.h> .

February 1997 posix.fail