Developer's Daily | Unix by Example |
main | java | perl | unix | dev directory | web log |
readlink ? read 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 path in the buffer buf, which has size bufsiz. readlink does not append a NUL character 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. |
The call returns the count of characters placed in the buffer if it succeeds, or a ?1 if an error occurs, placing the error code in errno. |
ENOTDIR |
A component of the path prefix is not a directory. |
EINVAL |
bufsiz is not positive. |
ENAMETOOLONG |
A pathname, or a component of a pathname, was too long. |
ENOENT |
The named file does not exist. |
||
EACCES |
Search permission is denied for a component of the path prefix. |
||
ELOOP |
Too many symbolic links were encountered in translating the pathname. |
||
EINVAL |
The named file is not a symbolic link. |
||
EIO |
An I/O error occurred while reading from the file system. |
||
EFAULT |
buf extends outside the process’s allocated address space. |
||
ENOMEM |
Insufficient kernel memory was available. |
X/OPEN, 4.4BSD (the readlink function call appeared in 4.2BSD). |
stat(2), lstat(2), symlink(2) |