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

FreeBSD Manual Pages

  
 
  

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

NAME
     symlink, symlinkat	-- make	symbolic link to a file

SYNOPSIS
     #include <unistd.h>

     int
     symlink(const char	*name1,	const char *name2);

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

     int
     symlinkat(const char *name1, int fd, const	char *name2);

DESCRIPTION
     A symbolic	link name2 is created to name1 (name2 is the name of the file
     created, name1 is the string used in creating the symbolic	link).	Either
     name may be an arbitrary pathname;	the files need not be on the same file
     system, and the file specified by name1 need not exist at all.

     The symlinkat() function is equivalent to symlink() except	that where
     name2 specifies a relative	path, the newly	created	symbolic link is cre-
     ated relative to the directory associated with file descriptor fd instead
     of	the current working directory.

     If	symlinkat() 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 symlink().

RETURN VALUES
     Upon successful completion, the value 0 is	returned; otherwise the
     value -1 is returned and the global variable errno	is set to indicate the
     error.

ERRORS
     The symbolic link will fail if:

     [ENOTDIR]		A component of the name2 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]		A component of the name2 path prefix denies search
			permission.

     [ELOOP]		Too many symbolic links	were encountered in translat-
			ing the	pathname.

     [EEXIST]		name2 already exists.

     [EIO]		An I/O error occurred while making the directory entry
			for name2, or allocating the inode for name2, or writ-
			ing out	the link contents of name2.

     [EROFS]		The file name2 would reside on a read-only file	sys-
			tem.

     [ENOSPC]		The directory in which the entry for the new symbolic
			link is	being placed cannot be extended	because	there
			is no space left on the	file system containing the di-
			rectory.

     [ENOSPC]		The new	symbolic link cannot be	created	because	there
			is no space left on the	file system that will contain
			the symbolic link.

     [ENOSPC]		There are no free inodes on the	file system on which
			the symbolic link is being created.

     [EDQUOT]		The directory in which the entry for the new symbolic
			link is	being placed cannot be extended	because	the
			user's quota of	disk blocks on the file	system con-
			taining	the directory has been exhausted.

     [EDQUOT]		The new	symbolic link cannot be	created	because	the
			user's quota of	disk blocks on the file	system that
			will contain the symbolic link has been	exhausted.

     [EDQUOT]		The user's quota of inodes on the file system on which
			the symbolic link is being created has been exhausted.

     [EIO]		An I/O error occurred while making the directory entry
			or allocating the inode.

     [EFAULT]		name1 or name2 points outside the process's allocated
			address	space.

     Additionally, symlinkat() will fail if:

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

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

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

SEE ALSO
     ln(1), link(2), readlink(2), unlink(2), symlink(7)

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

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

FreeBSD	13.0			January	3, 2021			  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=symlink&sektion=2&manpath=OpenBSD+6.9>

home | help