READLINKAT(2) Linux Programmer's Manual READLINKAT(2)
readlinkat - read value of a symbolic link relative to a directory file
int readlinkat(int dirfd, const char *path, char *buf, size_t bufsiz);
The readlinkat() system call operates in exactly the same way as read-
link(2), except for the differences described in this manual page.
If the pathname given in path is relative, then it is interpreted rela-
tive to the directory referred to by the file descriptor dirfd (rather
than relative to the current working directory of the calling process,
as is done by readlink(2) for a relative pathname).
If the pathname given in path is relative and dirfd is the special
value AT_FDCWD, then path is interpreted relative to the current work-
ing directory of the calling process (like readlink(2)).
If the pathname given in path is absolute, then dirfd is ignored.
On success, readlinkat() returns 0. On error, -1 is returned and errno
is set to indicate the error.
The same errors that occur for readlink(2) can also occur for read-
linkat(). The following additional errors can occur for readlinkat():
EBADF dirfd is not a valid file descriptor.
path is a relative path and dirfd is a file descriptor referring
to a file other than a directory.
See openat(2) for an explanation of the need for readlinkat().
This system call is non-standard but is proposed for inclusion in a
future revision of POSIX.1.
readlinkat() was added to Linux in kernel 2.6.16.
openat(2), path_resolution(2), readlink(2)
Linux 2.6.16 2006-07-21 READLINKAT(2)