FHLINK(2) | System Calls Manual | FHLINK(2) |
fhlink
, fhlinkat
— make a hard file link
Standard C Library (libc, -lc)
#include
<unistd.h>
int
fhlink
(fhandle_t
*fhp, const char
*to);
int
fhlinkat
(fhandle_t
*fhp, int tofd,
const char *to);
The
fhlink
()
system call atomically creates the specified directory entry (hard link)
to with the attributes of the underlying object
pointed at by fhp. If the link is successful: the link
count of the underlying object is incremented; fhp and
to share equal access and rights to the underlying
object.
If fhp is removed, the file to is not deleted and the link count of the underlying object is decremented.
The object pointed at by the fhp argument must exist for the hard link to succeed and both fhp and to must be in the same file system. The fhp argument may not be a directory.
The
fhlinkat
()
system call is equivalent to fhlink except in the case
where to is a relative paths. In this case a relative
path to is interpreted relative to the directory
associated with the file descriptor tofd instead of
the current working directory.
Values for flag are constructed by a
bitwise-inclusive OR of flags from the following list, defined in
<fcntl.h>
:
AT_SYMLINK_FOLLOW
AT_BENEATH
O_BENEATH
flag in the
open(2) manual page.If
fhlinkat
()
is passed the special value AT_FDCWD
in the
tofd parameter, the current working directory is used
for the to argument. If tofd has
value AT_FDCWD
, the behavior is identical to a call
to
link
().
Unless flag contains the
AT_SYMLINK_FOLLOW
flag, if fhp
names a symbolic link, a new link is created for the symbolic link
fhp and not its target.
The link
() function returns the
value 0 if successful; otherwise the value -1 is returned and
the global variable errno is set to indicate the
error.
The fhlink
() system call will fail and no
link will be created if:
ENOTDIR
]ENAMETOOLONG
]ENOENT
]EOPNOTSUPP
]EMLINK
]EACCES
]EACCES
]ELOOP
]ENOENT
]EEXIST
]EPERM
]EPERM
]EPERM
]EXDEV
]ENOSPC
]EDQUOT
]EIO
]EINTEGRITY
]EROFS
]EFAULT
]ESTALE
]In addition to the errors returned by the
fhlink
(), the fhlinkat
()
system call may fail if:
EBADF
]AT_FDCWD
nor a valid file descriptor open
for searching.EINVAL
]ENOTDIR
]AT_FDCWD
nor a file descriptor associated with a
directory.March 30, 2020 | Debian |