Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


symlink(3p) — Linux manual page

PROLOG |NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |EXAMPLES |APPLICATION USAGE |RATIONALE |FUTURE DIRECTIONS |SEE ALSO |COPYRIGHT

SYMLINK(3P)             POSIX Programmer's ManualSYMLINK(3P)

PROLOG        top

       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.

NAME        top

       symlink, symlinkat — make a symbolic link

SYNOPSIS        top

       #include <unistd.h>       int symlink(const char *path1, const char *path2);       #include <fcntl.h>       int symlinkat(const char *path1, intfd, const char *path2);

DESCRIPTION        top

       Thesymlink() function shall create a symbolic link calledpath2       that contains the string pointed to bypath1 (path2 is the name of       the symbolic link created,path1 is the string contained in the       symbolic link).       The string pointed to bypath1 shall be treated only as a string       and shall not be validated as a pathname.       If thesymlink() function fails for any reason other than[EIO],       any file named bypath2 shall be unaffected.       Ifpath2 names a symbolic link,symlink() shall fail and seterrno       to[EEXIST].       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.       The values of the file mode bits for the created symbolic link are       unspecified. All interfaces specified by POSIX.1‐2008 shall behave       as if the contents of symbolic links can always be read, except       that the value of the file mode bits returned in thest_mode field       of thestatstructure is unspecified.       Upon successful completion,symlink() 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.       Thesymlinkat() function shall be equivalent to thesymlink()       function except in the case wherepath2 specifies a relative path.       In this case the symbolic link is created relative to the       directory associated with the file descriptorfd 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.       Ifsymlinkat() is passed the special value AT_FDCWD in thefd       parameter, the current working directory shall be used and the       behavior shall be identical to a call tosymlink().

RETURN VALUE        top

       Upon successful completion, these functions shall return 0.       Otherwise, these functions shall return -1 and seterrno to       indicate the error.

ERRORS        top

       These functions shall fail if:EACCESWrite 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 ofpath2.EEXISTThepath2 argument names an existing file.EIOAn I/O error occurs while reading from or writing to the              file system.ELOOPA loop exists in symbolic links encountered during              resolution of thepath2 argument.ENAMETOOLONG              The length of a component of the pathname specified by thepath2 argument is longer than {NAME_MAX} or the length of              thepath1 argument is longer than {SYMLINK_MAX}.ENOENTA component of the path prefix ofpath2 does not name an              existing file orpath2 is an empty string.ENOENTorENOTDIR              Thepath2 argument contains at least one non-<slash>              character and ends with one or more trailing <slash>              characters. Ifpath2 without the trailing <slash>              characters would name an existing file, an[ENOENT]error              shall not occur.ENOSPCThe 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.ENOTDIR              A component of the path prefix ofpath2 names an existing              file that is neither a directory nor a symbolic link to a              directory.EROFSThe new symbolic link would reside on a read-only file              system.       Thesymlinkat() function shall fail if:EACCESThe access mode of the open file description associated              withfd is not O_SEARCH and the permissions of the              directory underlyingfd do not permit directory searches.EBADFThepath2 argument does not specify an absolute path and              thefd argument is neither AT_FDCWD nor a valid file              descriptor open for reading or searching.ENOTDIR              Thepath2 argument is not an absolute path andfd is a file              descriptor associated with a non-directory file.       These functions may fail if:ELOOPMore than {SYMLOOP_MAX} symbolic links were encountered              during resolution of thepath2 argument.ENAMETOOLONG              The length of thepath2 argument exceeds {PATH_MAX} or              pathname resolution of a symbolic link in thepath2              argument produced an intermediate result with a length that              exceeds {PATH_MAX}.The following sections are informative.

EXAMPLES        top

       None.

APPLICATION USAGE        top

       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 thepath1 argument need not exist when the link is       created. A symbolic link can cross file system boundaries.       Normal permission checks are made on each component of the       symbolic link pathname during its resolution.

RATIONALE        top

       The purpose of thesymlinkat() 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 tosymlink(),       resulting in unspecified behavior. By opening a file descriptor       for the target directory and using thesymlinkat() function it can       be guaranteed that the created symbolic link is located relative       to the desired directory.

FUTURE DIRECTIONS        top

       None.

SEE ALSO        top

fdopendir(3p),fstatat(3p),lchown(3p),link(3p),open(3p),readlink(3p),rename(3p),unlink(3p)       The Base Definitions volume of POSIX.1‐2017,fcntl.h(0p),unistd.h(0p)

COPYRIGHT        top

       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 athttp://www.opengroup.org/unix/online.html .       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, seehttps://www.kernel.org/doc/man-pages/reporting_bugs.html .IEEE/The Open Group                2017SYMLINK(3P)

Pages that refer to this page:unistd.h(0p)fdopendir(3p)fstatat(3p)lchown(3p)link(3p)open(3p)readdir(3p)readlink(3p)rename(3p)unlink(3p)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp