1.\" $OpenBSD: symlink.2,v 1.21 2020/02/11 13:19:17 schwarze Exp $ 2.\" $NetBSD: symlink.2,v 1.7 1995/02/27 12:38:34 cgd Exp $ 3.\" 4.\" Copyright (c) 1983, 1991, 1993 5.\" The Regents of the University of California. All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 3. Neither the name of the University nor the names of its contributors 16.\" may be used to endorse or promote products derived from this software 17.\" without specific prior written permission. 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29.\" SUCH DAMAGE. 30.\" 31.\" @(#)symlink.2 8.1 (Berkeley) 6/4/93 32.\" 33.Dd $Mdocdate: February 11 2020 $ 34.Dt SYMLINK 2 35.Os 36.Sh NAME 37.Nm symlink , 38.Nm symlinkat 39.Nd make symbolic link to a file 40.Sh SYNOPSIS 41.In unistd.h 42.Ft int 43.Fn symlink "const char *name1" "const char *name2" 44.In fcntl.h 45.In unistd.h 46.Ft int 47.Fn symlinkat "const char *name1" "int fd" "const char *name2" 48.Sh DESCRIPTION 49A symbolic link 50.Fa name2 51is created to 52.Fa name1 53.Pf ( Fa name2 54is the name of the 55file created, 56.Fa name1 57is the string 58used in creating the symbolic link). 59Either name may be an arbitrary path name; the files need not 60be on the same file system, and the file specified by 61.Fa name1 62need not exist at all. 63.Pp 64The 65.Fn symlinkat 66function is equivalent to 67.Fn symlink 68except that where 69.Fa name2 70specifies a relative path, 71the newly created symbolic link is created relative to 72the directory associated with file descriptor 73.Fa fd 74instead of the current working directory. 75.Pp 76If 77.Fn symlinkat 78is passed the special value 79.Dv AT_FDCWD 80(defined in 81.In fcntl.h ) 82in the 83.Fa fd 84parameter, the current working directory is used 85and the behavior is identical to a call to 86.Fn symlink . 87.Sh RETURN VALUES 88.Rv -std 89.Sh ERRORS 90The symbolic link will fail if: 91.Bl -tag -width Er 92.It Bq Er ENOTDIR 93A component of the 94.Fa name2 95prefix is not a directory. 96.It Bq Er ENAMETOOLONG 97A component of a pathname exceeded 98.Dv NAME_MAX 99characters, or an entire pathname (including the terminating NUL) 100exceeded 101.Dv PATH_MAX 102bytes. 103.It Bq Er ENOENT 104The named file does not exist. 105.It Bq Er EACCES 106A component of the 107.Fa name2 108path prefix denies search permission. 109.It Bq Er ELOOP 110Too many symbolic links were encountered in translating the pathname. 111.It Bq Er EEXIST 112.Fa name2 113already exists. 114.It Bq Er EIO 115An I/O error occurred while making the directory entry for 116.Fa name2 , 117or allocating the inode for 118.Fa name2 , 119or writing out the link contents of 120.Fa name2 . 121.It Bq Er EROFS 122The file 123.Fa name2 124would reside on a read-only file system. 125.It Bq Er ENOSPC 126The directory in which the entry for the new symbolic link is being placed 127cannot be extended because there is no space left on the file 128system containing the directory. 129.It Bq Er ENOSPC 130The new symbolic link cannot be created because there 131is no space left on the file 132system that will contain the symbolic link. 133.It Bq Er ENOSPC 134There are no free inodes on the file system on which the 135symbolic link is being created. 136.It Bq Er EDQUOT 137The directory in which the entry for the new symbolic link 138is being placed cannot be extended because the 139user's quota of disk blocks on the file system 140containing the directory has been exhausted. 141.It Bq Er EDQUOT 142The new symbolic link cannot be created because the user's 143quota of disk blocks on the file system that will 144contain the symbolic link has been exhausted. 145.It Bq Er EDQUOT 146The user's quota of inodes on the file system on 147which the symbolic link is being created has been exhausted. 148.It Bq Er EIO 149An I/O error occurred while making the directory entry or allocating the inode. 150.It Bq Er EFAULT 151.Fa name1 152or 153.Fa name2 154points outside the process's allocated address space. 155.El 156.Pp 157Additionally, 158.Fn symlinkat 159will fail if: 160.Bl -tag -width Er 161.It Bq Er EBADF 162The 163.Fa name2 164argument specifies a relative path and the 165.Fa fd 166argument is neither 167.Dv AT_FDCWD 168nor a valid file descriptor. 169.It Bq Er ENOTDIR 170The 171.Fa name2 172argument specifies a relative path and the 173.Fa fd 174argument is a valid file descriptor but it does not reference a directory. 175.It Bq Er EACCES 176The 177.Fa name2 178argument specifies a relative path but search permission is denied 179for the directory which the 180.Fa fd 181file descriptor references. 182.El 183.Sh SEE ALSO 184.Xr ln 1 , 185.Xr link 2 , 186.Xr readlink 2 , 187.Xr unlink 2 , 188.Xr symlink 7 189.Sh STANDARDS 190The 191.Fn symlink 192and 193.Fn symlinkat 194functions conform to 195.St -p1003.1-2008 . 196.Sh HISTORY 197The 198.Fn symlink 199system call first appeared in 200.Bx 4.1c . 201The 202.Fn symlinkat 203system call has been available since 204.Ox 5.0 . 205