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.