|LINKAT(2)||Linux Programmer's Manual||LINKAT(2)|
NAMElinkat - create a file link relative to directory file descriptors
int linkat(int olddirfd , const char * oldpath ,
int newdirfd , const char * newpath , int flags );
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
- Since glibc 2.10:
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
- Before glibc 2.10:
DESCRIPTIONThe linkat() system call operates in exactly the same way as link(2), except for the differences described in this manual page.
- AT_EMPTY_PATH (since Linux 2.6.39)
- If oldpath is an empty string, create a link to the file referenced by olddirfd (which may have been obtained using the open(2) O_PATH flag). In this case, olddirfd can refer to any type of file, not just a directory. The caller must have the CAP_DAC_READ_SEARCH capability in order to use this flag; this prevents arbitrary users from creating hard links using file descriptors received via a UNIX domain socket (see the discussion of SCM_RIGHTS in unix(7)).
- AT_SYMLINK_FOLLOW (since Linux 2.6.18)
- By default, linkat(), does not dereference oldpath if it is a symbolic link (like link(2)). The flag AT_SYMLINK_FOLLOW can be specified in flags to cause oldpath to be dereferenced if it is a symbolic link.
Before kernel 2.6.18, the flags argument was unused, and had to be specified as 0.
RETURN VALUEOn success, linkat() returns 0. On error, -1 is returned and errno is set to indicate the error.
ERRORSThe same errors that occur for link(2) can also occur for linkat(). The following additional errors can occur for linkat():
- olddirfd or newdirfd is not a valid file descriptor.
- AT_EMPTY_PATH was specified in flags, but the caller did not have the CAP_DAC_READ_SEARCH capability.
- oldpath is relative and olddirfd is a file descriptor referring to a file other than a directory; or similar for newpath and newdirfd
VERSIONSlinkat() was added to Linux in kernel 2.6.16; library support was added to glibc in version 2.4.
NOTESSee openat(2) for an explanation of the need for linkat().
SEE ALSOlink(2), openat(2), path_resolution(7), symlink(7)
COLOPHONThis page is part of release 3.53 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.