GNU/Linux |
Debian 6.0.3(Squeeze) |
|
![]() |
readlink(2) |
![]() |
readlink − read value of a symbolic link
#include <unistd.h>
ssize_t readlink(const char *path, char *buf, size_t bufsiz);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
readlink():
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE >= 200112L
readlink() places the contents of the symbolic link path in the buffer buf, which has size bufsiz. readlink() does not append a null byte to buf. It will truncate the contents (to a length of bufsiz characters), in case the buffer is too small to hold all of the contents.
On success, readlink() returns the number of bytes placed in buf. On error, −1 is returned and errno is set to indicate the error.
EACCES |
Search permission is denied for a component of the path prefix. (See also path_resolution(7).) | ||
EFAULT |
buf extends outside the process’s allocated address space. | ||
EINVAL |
bufsiz is not positive. | ||
EINVAL |
The named file is not a symbolic link. | ||
EIO |
An I/O error occurred while reading from the file system. | ||
ELOOP |
Too many symbolic links were encountered in translating the pathname. |
ENAMETOOLONG
A pathname, or a component of a pathname, was too long.
ENOENT |
The named file does not exist. |
|||
ENOMEM |
Insufficient kernel memory was available. |
ENOTDIR
A component of the path prefix is not a directory.
4.4BSD (readlink() first appeared in 4.2BSD), POSIX.1-2001.
In versions of glibc up to and including glibc 2.4, the return type of readlink() was declared as int. Nowadays, the return type is declared as ssize_t, as (newly) required in POSIX.1-2001.
lstat(2), readlinkat(2), stat(2), symlink(2), path_resolution(7), symlink(7)
This page is part of release 3.27 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
![]() |
readlink(2) | ![]() |