readlink(2) readlink(2)
readlink - read the value of a symbolic link
#include <unistd.h>
int readlink(const char *path, char *buf, size_t bufsiz);
readlink places the contents of the symbolic link referred to by path in
the buffer buf, which has size bufsiz. The contents of the link are not
null-terminated when returned.
readlink fails and the buffer remains unchanged if:
EACCES Search permission is denied for a component of the
path prefix of path.
EACCES Read permission is denied on the file named by path.
EFAULT path or buf extends outside the allocated address
space of the process.
EINVAL The named file is not a symbolic link.
EIO An I/O error occurs while reading from or writing to
the file system.
ELOOP Too many symbolic links are encountered in
translating path.
ENAMETOOLONG The length of the path argument exceeds {PATH_MAX},
or the length of a path component exceeds {NAME_MAX}
while _POSIX_NO_TRUNC is in effect.
ENOENT The named file does not exist.
ENOSYS The file system does not support symbolic links.
readlink updates the time of last access (see stat(2)) of the link.
If the buffer passed to readlink is smaller than the symbolic link file
being read, readlink returns only as many characters as will fit in the
buffer. Using a buffer of size PATH_MAX or greater eliminates the
possibility of reading an incomplete link value.
Upon successful completion readlink returns the number of characters
placed in the buffer; otherwise, it returns -1 and places an error code
in errno.
Page 1
readlink(2) readlink(2)
lstat(2), stat(2), symlink(2), realpath(3).
PPPPaaaaggggeeee 2222 [ Back ]
|