Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
READLINK(2)		  FreeBSD System Calls Manual		   READLINK(2)

NAME
     readlink, readlinkat -- read value	of a symbolic link

SYNOPSIS
     #include <unistd.h>

     ssize_t
     readlink(const char *restrict path, char *restrict	buf, size_t bufsiz);

     #include <fcntl.h>
     #include <unistd.h>

     ssize_t
     readlinkat(int fd,	const char *path, char *buf, size_t bufsiz);

DESCRIPTION
     The readlink() function 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.

     The readlinkat() function is equivalent to	readlink() except that where
     path specifies a relative path, the symbolic link whose contents are read
     is	determined relative to the directory associated	with file descriptor
     fd	instead	of the current working directory.

     If	readlinkat() is	passed the special value AT_FDCWD (defined in
     <fcntl.h>)	in the fd parameter, the current working directory is used and
     the behavior is identical to a call to readlink().

RETURN VALUES
     The call returns the count	of characters placed in	the buffer if it suc-
     ceeds, or a -1 if an error	occurs,	placing	the error code in the global
     variable errno.

ERRORS
     readlink()	and readlinkat() will fail if:

     [ENOTDIR]		A component of the path	prefix is not a	directory.

     [ENAMETOOLONG]	A component of a pathname exceeded NAME_MAX charac-
			ters, or an entire pathname (including the terminating
			NUL) exceeded PATH_MAX bytes.

     [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 translat-
			ing the	pathname.

     [EINVAL]		The named file is not a	symbolic link.

     [EIO]		An I/O error occurred while reading from the file sys-
			tem.

     [EFAULT]		buf or path extends outside the	process's allocated
			address	space.

     Additionally, readlinkat()	will fail if:

     [EBADF]		The path argument specifies a relative path and	the fd
			argument is neither AT_FDCWD nor a valid file descrip-
			tor.

     [ENOTDIR]		The path argument specifies a relative path and	the fd
			argument is a valid file descriptor but	it does	not
			reference a directory.

     [EACCES]		The path argument specifies a relative path but	search
			permission is denied for the directory which the fd
			file descriptor	references.

SEE ALSO
     lstat(2), stat(2),	symlink(2), symlink(7)

STANDARDS
     The readlink() and	readlinkat() functions conform to IEEE Std 1003.1-2008
     ("POSIX.1").

HISTORY
     The readlink() system call	first appeared in 4.1cBSD.  The	readlinkat()
     system call has been available since OpenBSD 5.0.

FreeBSD	13.0			 May 31, 2015			  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=readlink&sektion=2&manpath=OpenBSD+6.9>

home | help