OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / original / man2 / link.2
diff --git a/original/man2/link.2 b/original/man2/link.2
deleted file mode 100644 (file)
index a4c7add..0000000
+++ /dev/null
@@ -1,428 +0,0 @@
-.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
-.\" and Copyright (C) 2006, 2014 Michael Kerrisk
-.\"
-.\" %%%LICENSE_START(VERBATIM)
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\" %%%LICENSE_END
-.\"
-.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
-.\" Modified 1994-08-21 by Michael Haardt
-.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
-.\"
-.TH LINK 2 2014-08-19 "Linux" "Linux Programmer's Manual"
-.SH NAME
-link, linkat \- make a new name for a file
-.SH SYNOPSIS
-.nf
-.B #include <unistd.h>
-.sp
-.BI "int link(const char *" oldpath ", const char *" newpath );
-.sp
-.BR "#include <fcntl.h>           " "/* Definition of AT_* constants */"
-.B #include <unistd.h>
-.sp
-.BI "int linkat(int " olddirfd ", const char *" oldpath ,
-.BI "           int " newdirfd ", const char *" newpath ", int " flags );
-.fi
-.sp
-.in -4n
-Feature Test Macro Requirements for glibc (see
-.BR feature_test_macros (7)):
-.in
-.sp
-.BR linkat ():
-.PD 0
-.ad l
-.RS 4
-.TP 4
-Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
-.TP
-Before glibc 2.10:
-_ATFILE_SOURCE
-.RE
-.ad
-.PD
-.SH DESCRIPTION
-.BR link ()
-creates a new link (also known as a hard link) to an existing file.
-
-If
-.I newpath
-exists, it will
-.I not
-be overwritten.
-
-This new name may be used exactly as the old one for any operation;
-both names refer to the same file (and so have the same permissions
-and ownership) and it is impossible to tell which name was the
-"original".
-.SS linkat()
-The
-.BR linkat ()
-system call operates in exactly the same way as
-.BR link (),
-except for the differences described here.
-
-If the pathname given in
-.I oldpath
-is relative, then it is interpreted relative to the directory
-referred to by the file descriptor
-.I olddirfd
-(rather than relative to the current working directory of
-the calling process, as is done by
-.BR link ()
-for a relative pathname).
-
-If
-.I oldpath
-is relative and
-.I olddirfd
-is the special value
-.BR AT_FDCWD ,
-then
-.I oldpath
-is interpreted relative to the current working
-directory of the calling process (like
-.BR link ()).
-
-If
-.I oldpath
-is absolute, then
-.I olddirfd
-is ignored.
-
-The interpretation of
-.I newpath
-is as for
-.IR oldpath ,
-except that a relative pathname is interpreted relative
-to the directory referred to by the file descriptor
-.IR newdirfd .
-
-The following values can be bitwise ORed in
-.IR flags :
-.TP
-.BR AT_EMPTY_PATH " (since Linux 2.6.39)"
-.\" commit 11a7b371b64ef39fc5fb1b6f2218eef7c4d035e3
-If
-.I oldpath
-is an empty string, create a link to the file referenced by
-.IR olddirfd
-(which may have been obtained using the
-.BR open (2)
-.B O_PATH
-flag).
-In this case,
-.I olddirfd
-can refer to any type of file, not just a directory.
-This will generally not work if the file has a link count of zero (files
-created with
-.BR O_TMPFILE
-and without
-.BR O_EXCL
-are an exception).
-The caller must have the
-.BR CAP_DAC_READ_SEARCH
-capability in order to use this flag.
-This flag is Linux-specific; define
-.B _GNU_SOURCE
-.\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed
-to obtain its definition.
-.TP
-.BR AT_SYMLINK_FOLLOW " (since Linux 2.6.18)"
-By default,
-.BR linkat (),
-does not dereference
-.I oldpath
-if it is a symbolic link (like
-.BR link ()).
-The flag
-.B AT_SYMLINK_FOLLOW
-can be specified in
-.I flags
-to cause
-.I oldpath
-to be dereferenced if it is a symbolic link.
-If procfs is mounted,
-this can be used as an alternative to
-.BR AT_EMPTY_PATH ,
-like this:
-
-.nf
-.in +4n
-linkat(AT_FDCWD, "/proc/self/fd/<fd>", newdirfd,
-       newname, AT_SYMLINK_FOLLOW);
-.in
-.fi
-.PP
-Before kernel 2.6.18, the
-.I flags
-argument was unused, and had to be specified as 0.
-.PP
-See
-.BR openat (2)
-for an explanation of the need for
-.BR linkat ().
-.SH RETURN VALUE
-On success, zero is returned.
-On error, \-1 is returned, and
-.I errno
-is set appropriately.
-.SH ERRORS
-.TP
-.B EACCES
-Write access to the directory containing
-.I newpath
-is denied, or search permission is denied for one of the directories
-in the path prefix of
-.I oldpath
-or
-.IR newpath .
-(See also
-.BR path_resolution (7).)
-.TP
-.B EDQUOT
-The user's quota of disk blocks on the filesystem has been exhausted.
-.TP
-.B EEXIST
-.I newpath
-already exists.
-.TP
-.B EFAULT
-.IR oldpath " or " newpath " points outside your accessible address space."
-.TP
-.B EIO
-An I/O error occurred.
-.TP
-.B ELOOP
-Too many symbolic links were encountered in resolving
-.IR oldpath " or " newpath .
-.TP
-.B EMLINK
-The file referred to by
-.I oldpath
-already has the maximum number of links to it.
-.TP
-.B ENAMETOOLONG
-.IR oldpath " or " newpath " was too long."
-.TP
-.B ENOENT
-A directory component in
-.IR oldpath " or " newpath
-does not exist or is a dangling symbolic link.
-.TP
-.B ENOMEM
-Insufficient kernel memory was available.
-.TP
-.B ENOSPC
-The device containing the file has no room for the new directory
-entry.
-.TP
-.B ENOTDIR
-A component used as a directory in
-.IR oldpath " or " newpath
-is not, in fact, a directory.
-.TP
-.B EPERM
-.I oldpath
-is a directory.
-.TP
-.B EPERM
-The filesystem containing
-.IR oldpath " and " newpath
-does not support the creation of hard links.
-.TP
-.BR EPERM " (since Linux 3.6)"
-The caller does not have permission to create a hard link to this file
-(see the description of
-.IR /proc/sys/fs/protected_hardlinks
-in
-.BR proc (5)).
-.TP
-.B EROFS
-The file is on a read-only filesystem.
-.TP
-.B EXDEV
-.IR oldpath " and " newpath
-are not on the same mounted filesystem.
-(Linux permits a filesystem to be mounted at multiple points, but
-.BR link ()
-does not work across different mount points,
-even if the same filesystem is mounted on both.)
-.PP
-The following additional errors can occur for
-.BR linkat ():
-.TP
-.B EBADF
-.I olddirfd
-or
-.I newdirfd
-is not a valid file descriptor.
-.TP
-.B EINVAL
-An invalid flag value was specified in
-.IR flags .
-.TP
-.B ENOENT
-.B AT_EMPTY_PATH
-was specified in
-.IR flags ,
-but the caller did not have the
-.B CAP_DAC_READ_SEARCH
-capability.
-.TP
-.B ENOENT
-An attempt was made to link to the
-.I /proc/self/fd/NN
-file corresponding to a file descriptor created with
-
-    open(path, O_TMPFILE | O_EXCL, mode);
-
-See
-.BR open (2).
-.TP
-.B ENOENT
-.I oldpath
-is a relative pathname and
-.I olddirfd
-refers to a directory that has been deleted,
-or
-.I newpath
-is a relative pathname and
-.I newdirfd
-refers to a directory that has been deleted.
-.TP
-.B ENOTDIR
-.I oldpath
-is relative and
-.I olddirfd
-is a file descriptor referring to a file other than a directory;
-or similar for
-.I newpath
-and
-.I newdirfd
-.TP
-.B EPERM
-.BR AT_EMPTY_PATH
-was specified in
-.IR flags ,
-.I oldpath
-is an empty string, and
-.IR olddirfd
-refers to a directory.
-.SH VERSIONS
-.BR linkat ()
-was added to Linux in kernel 2.6.16;
-library support was added to glibc in version 2.4.
-.SH CONFORMING TO
-.BR link ():
-SVr4, 4.3BSD, POSIX.1-2001 (but see NOTES), POSIX.1-2008.
-.\" SVr4 documents additional ENOLINK and
-.\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP.
-.\" X/OPEN does not document EFAULT, ENOMEM or EIO.
-
-.BR linkat ():
-POSIX.1-2008.
-.SH NOTES
-Hard links, as created by
-.BR link (),
-cannot span filesystems.
-Use
-.BR symlink (2)
-if this is required.
-
-POSIX.1-2001 says that
-.BR link ()
-should dereference
-.I oldpath
-if it is a symbolic link.
-However, since kernel 2.0,
-.\" more precisely: since kernel 1.3.56
-Linux does not do so: if
-.I oldpath
-is a symbolic link, then
-.I newpath
-is created as a (hard) link to the same symbolic link file
-(i.e.,
-.I newpath
-becomes a symbolic link to the same file that
-.I oldpath
-refers to).
-Some other implementations behave in the same manner as Linux.
-.\" For example, the default Solaris compilation environment
-.\" behaves like Linux, and contributors to a March 2005
-.\" thread in the Austin mailing list reported that some
-.\" other (System V) implementations did/do the same -- MTK, Apr 05
-POSIX.1-2008 changes the specification of
-.BR link (),
-making it implementation-dependent whether or not
-.I oldpath
-is dereferenced if it is a symbolic link.
-For precise control over the treatment of symbolic links when
-creating a link, use
-.BR linkat (2).
-.SS Glibc notes
-On older kernels where
-.BR linkat ()
-is unavailable, the glibc wrapper function falls back to the use of
-.BR link (),
-unless the
-.B AT_SYMLINK_FOLLOW
-is specified.
-When
-.I oldpath
-and
-.I newpath
-are relative pathnames,
-glibc constructs pathnames based on the symbolic links in
-.IR /proc/self/fd
-that correspond to the
-.I olddirfd
-and
-.IR newdirfd
-arguments.
-.SH BUGS
-On NFS filesystems, the return code may be wrong in case the NFS server
-performs the link creation and dies before it can say so.
-Use
-.BR stat (2)
-to find out if the link got created.
-.SH SEE ALSO
-.BR ln (1),
-.BR open (2),
-.BR rename (2),
-.BR stat (2),
-.BR symlink (2),
-.BR unlink (2),
-.BR path_resolution (7),
-.BR symlink (7)
-.SH COLOPHON
-This page is part of release 3.79 of the Linux
-.I man-pages
-project.
-A description of the project,
-information about reporting bugs,
-and the latest version of this page,
-can be found at
-\%http://www.kernel.org/doc/man\-pages/.