READLINK(2) Linux Programmer's Manual 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 || _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.

Search permission is denied for a component of the path prefix. (See also path_resolution(7).)
buf extends outside the process's allocated address space.
bufsiz is not positive.
The named file is not a symbolic link.
An I/O error occurred while reading from the file system.
Too many symbolic links were encountered in translating the pathname.
A pathname, or a component of a pathname, was too long.
The named file does not exist.
Insufficient kernel memory was available.
A component of the path prefix is not a directory.

4.4BSD (the readlink() function call 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.16 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/.

2007-07-26 Linux

Different Versions of this Page: