summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2017/man3p/symlink.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2017/man3p/symlink.3p')
-rw-r--r--man-pages-posix-2017/man3p/symlink.3p287
1 files changed, 287 insertions, 0 deletions
diff --git a/man-pages-posix-2017/man3p/symlink.3p b/man-pages-posix-2017/man3p/symlink.3p
new file mode 100644
index 0000000..701baae
--- /dev/null
+++ b/man-pages-posix-2017/man3p/symlink.3p
@@ -0,0 +1,287 @@
+'\" et
+.TH SYMLINK "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.\"
+.SH NAME
+symlink, symlinkat
+\(em make a symbolic link
+.SH SYNOPSIS
+.LP
+.nf
+#include <unistd.h>
+.P
+int symlink(const char *\fIpath1\fP, const char *\fIpath2\fP);
+.P
+#include <fcntl.h>
+.P
+int symlinkat(const char *\fIpath1\fP, int \fIfd\fP, const char *\fIpath2\fP);
+.fi
+.SH DESCRIPTION
+The
+\fIsymlink\fR()
+function shall create a symbolic link called
+.IR path2
+that contains the string pointed to by
+.IR path1
+(\c
+.IR path2
+is the name of the symbolic link created,
+.IR path1
+is the string contained in the symbolic link).
+.P
+The string pointed to by
+.IR path1
+shall be treated only as a string and shall not be validated
+as a pathname.
+.P
+If the
+\fIsymlink\fR()
+function fails for any reason other than
+.BR [EIO] ,
+any file named by
+.IR path2
+shall be unaffected.
+.P
+If
+.IR path2
+names a symbolic link,
+\fIsymlink\fR()
+shall fail and set
+.IR errno
+to
+.BR [EEXIST] .
+.P
+The symbolic link's user ID shall be set to the process' effective
+user ID. The symbolic link's group ID shall be set to the group
+ID of the parent directory or to the effective group ID of the
+process. Implementations shall provide a way to initialize the symbolic
+link's group ID to the group ID of the parent directory. Implementations
+may, but need not, provide an implementation-defined way to initialize the
+symbolic link's group ID to the effective group ID of the calling process.
+.P
+The values of the file mode bits for the created symbolic link are
+unspecified. All interfaces specified by POSIX.1\(hy2008 shall behave as if the
+contents of symbolic links can always be read, except that the value of
+the file mode bits returned in the
+.IR st_mode
+field of the
+.BR stat
+structure is unspecified.
+.P
+Upon successful completion,
+\fIsymlink\fR()
+shall mark for update the last data access, last data modification,
+and last file status change timestamps of the symbolic link. Also,
+the last data modification and last file status change timestamps of
+the directory that contains the new entry shall be marked for update.
+.P
+The
+\fIsymlinkat\fR()
+function shall be equivalent to the
+\fIsymlink\fR()
+function except in the case where
+.IR path2
+specifies a relative path. In this case the symbolic link is created
+relative to the directory associated with the file descriptor
+.IR fd
+instead of the current working directory. If the access mode of the
+open file description associated with the file descriptor is not
+O_SEARCH, the function shall check whether directory searches are
+permitted using the current permissions of the directory underlying
+the file descriptor. If the access mode is O_SEARCH, the function
+shall not perform the check.
+.P
+If
+\fIsymlinkat\fR()
+is passed the special value AT_FDCWD in the
+.IR fd
+parameter, the current working directory shall be used and the behavior
+shall be identical to a call to
+\fIsymlink\fR().
+.SH "RETURN VALUE"
+Upon successful completion, these functions shall return 0.
+Otherwise, these functions shall return \-1 and set
+.IR errno
+to indicate the error.
+.SH ERRORS
+These functions shall fail if:
+.TP
+.BR EACCES
+Write permission is denied in the directory where the symbolic link is
+being created, or search permission is denied for a component of the
+path prefix of
+.IR path2 .
+.TP
+.BR EEXIST
+The
+.IR path2
+argument names an existing file.
+.TP
+.BR EIO
+An I/O error occurs while reading from or writing to the file system.
+.TP
+.BR ELOOP
+A loop exists in symbolic links encountered during resolution of the
+.IR path2
+argument.
+.TP
+.BR ENAMETOOLONG
+.br
+The length of a component of the pathname specified by the
+.IR path2
+argument is longer than
+{NAME_MAX}
+or the length of the
+.IR path1
+argument is longer than
+{SYMLINK_MAX}.
+.TP
+.BR ENOENT
+A component of the path prefix of
+.IR path2
+does not name an existing file or
+.IR path2
+is an empty string.
+.TP
+.BR ENOENT " or " ENOTDIR
+.br
+The
+.IR path2
+argument contains at least one non-\c
+<slash>
+character and ends with one or more trailing
+<slash>
+characters. If
+.IR path2
+without the trailing
+<slash>
+characters would name an existing file, an
+.BR [ENOENT]
+error shall not occur.
+.TP
+.BR ENOSPC
+The directory in which the entry for the new symbolic link is being
+placed cannot be extended because no space is left on the file system
+containing the directory, or the new symbolic link cannot be created
+because no space is left on the file system which shall contain the
+link, or the file system is out of file-allocation resources.
+.TP
+.BR ENOTDIR
+A component of the path prefix of
+.IR path2
+names an existing file that is neither a directory nor a symbolic link
+to a directory.
+.TP
+.BR EROFS
+The new symbolic link would reside on a read-only file system.
+.P
+The
+\fIsymlinkat\fR()
+function shall fail if:
+.TP
+.BR EACCES
+The access mode of the open file description associated with
+.IR fd
+is not O_SEARCH and the permissions of the directory underlying
+.IR fd
+do not permit directory searches.
+.TP
+.BR EBADF
+The
+.IR path2
+argument does not specify an absolute path and the
+.IR fd
+argument is neither AT_FDCWD nor a valid file descriptor open for reading
+or searching.
+.TP
+.BR ENOTDIR
+The
+.IR path2
+argument is not an absolute path and
+.IR fd
+is a file descriptor associated with a non-directory file.
+.P
+These functions may fail if:
+.TP
+.BR ELOOP
+More than
+{SYMLOOP_MAX}
+symbolic links were encountered during resolution of the
+.IR path2
+argument.
+.TP
+.BR ENAMETOOLONG
+.br
+The length of the
+.IR path2
+argument exceeds
+{PATH_MAX}
+or pathname resolution of a symbolic link in the
+.IR path2
+argument produced an intermediate result with a length that exceeds
+{PATH_MAX}.
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+None.
+.SH "APPLICATION USAGE"
+Like a hard link, a symbolic link allows a file to have multiple
+logical names. The presence of a hard link guarantees the existence of
+a file, even after the original name has been removed. A symbolic link
+provides no such assurance; in fact, the file named by the
+.IR path1
+argument need not exist when the link is created. A symbolic link can
+cross file system boundaries.
+.P
+Normal permission checks are made on each component of the symbolic
+link pathname during its resolution.
+.SH RATIONALE
+The purpose of the
+\fIsymlinkat\fR()
+function is to create symbolic links in directories other than the
+current working directory without exposure to race conditions. Any part
+of the path of a file could be changed in parallel to a call to
+\fIsymlink\fR(),
+resulting in unspecified behavior. By opening a file descriptor for
+the target directory and using the
+\fIsymlinkat\fR()
+function it can be guaranteed that the created symbolic link is located
+relative to the desired directory.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "\fIfdopendir\fR\^(\|)",
+.IR "\fIfstatat\fR\^(\|)",
+.IR "\fIlchown\fR\^(\|)",
+.IR "\fIlink\fR\^(\|)",
+.IR "\fIopen\fR\^(\|)",
+.IR "\fIreadlink\fR\^(\|)",
+.IR "\fIrename\fR\^(\|)",
+.IR "\fIunlink\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2017,
+.IR "\fB<fcntl.h>\fP",
+.IR "\fB<unistd.h>\fP"
+.\"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1-2017, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, 2018 Edition,
+Copyright (C) 2018 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+In the event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .
+.PP
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .