NAME
readlink — read
the contents of a symbolic link
SYNOPSIS
#include <unistd.h> int readlink(const char *path, char *buf, size_t bufsize);
DESCRIPTION
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.
RETURN VALUE
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.
ERRORS
The readlink() function will fail if:
- [EACCES]
- Search permission is denied for a component of the path prefix of path .
- [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]
- Too many symbolic links were encountered in resolving path .
- [ENAMETOOLONG]
- The length of path exceeds {PATH_MAX}, or a pathname component is longer than {NAME_MAX}.
- [ENOTDIR]
- A component of the path prefix is not a directory.
The readlink() function may fail if:
- [EACCES]
- Read permission is denied for the directory.
- [ENAMETOOLONG]
- Pathname resolution of a symbolic link produced an intermediate result whose length exceeds {PATH_MAX}.
EXAMPLES
None.
APPLICATION USAGE
Portable applications should not assume that the returned contents of the symbolic link are null-terminated.
FUTURE DIRECTIONS
The return value may change in a future issue to align with IEEE PASC.
SEE ALSO
stat(3) , symlink(3) , <unistd.h> .