READLINK(2) BSD Programmer's Manual READLINK(2)
NAME
readlink - read value of a symbolic link
SYNOPSIS
#include <unistd.h>
ssize_t
readlink(const char *path, char *buf, size_t bufsiz);
DESCRIPTION
readlink() places the contents of the symbolic link path in the buffer
buf, which has size bufsiz. readlink does not append a NUL character to
buf.
RETURN VALUES
The call returns the count of characters placed in the buffer if it
succeeds, or a -1 if an error occurs, placing the error code in the glo-
bal variable errno.
ERRORS
readlink() will fail if:
[ENOTDIR] A component of the path prefix is not a directory.
[ENAMETOOLONG]
A component of a pathname exceeded {NAME_MAX} characters,
or an entire path name exceeded {PATH_MAX} characters.
[ENOENT] The named file does not exist.
[EACCES] Search permission is denied for a component of the path
prefix.
[ELOOP] Too many symbolic links were encountered in translating the
pathname.
[EINVAL] The named file is not a symbolic link.
[EIO] An I/O error occurred while reading from the filesystem.
[EFAULT] buf extends outside the process's allocated address space.
SEE ALSO
lstat(2), stat(2), symlink(2), symlink(7)
HISTORY
The readlink() function call appeared in 4.2BSD. It used to return int
but, matching IEEE Std 1003.1-2004 ("POSIX.1"), returns ssize_t now.
MirBSD #10-current November 26, 2020 1