ssize_t
readlink(const char * restrict path, char * restrict buf, size_t bufsiz)
)
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.
/symbolic/link
and stores them as null-terminated string:
#include <limits.h>
#include <unistd.h>
char buf[PATH_MAX];
ssize_t len;
if ((len = readlink("/symbolic/link", buf, sizeof(buf)-1)) == -1)
error handling;
buf[len] = '\0';
)
will fail if:
ENOTDIR]ENAMETOOLONG]{NAME_MAX}
characters, or an entire path name exceeded
{PATH_MAX}
characters.
ENOENT]EACCES]ELOOP]EINVAL]EIO]EFAULT]buf
extends outside the process's allocated address space.
)
function conforms to
IEEE Std 1003.1-2001 (``POSIX.1'') .
)
function appeared in
4.2BSD.
The type returned was changed from
int
to
ssize_t
in
NetBSD2.1.