Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FHLINK(2)		      System Calls Manual		     FHLINK(2)

NAME
       fhlink, fhlinkat	-- make	a hard file link

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<unistd.h>

       int
       fhlink(fhandle_t	*fhp, const char *to);

       int
       fhlinkat(fhandle_t *fhp,	int tofd, const	char *to);

DESCRIPTION
       The fhlink() system call	atomically creates the specified directory en-
       try (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 in-
       terpreted relative to the directory associated with the file descriptor
       tofd instead of the current working directory.

       If fhlinkat() is	passed the special value AT_FDCWD in the tofd  parame-
       ter,  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  sym-
       bolic link, a new link is created for the symbolic link fhp and not its
       target.

RETURN VALUES
       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.

ERRORS
       The fhlink() system call	will fail and no link will be created if:

       [ENOTDIR]	  A component of to prefix is not a directory.

       [ENAMETOOLONG]	  A component of to exceeded 255 characters, or	entire
			  length of to name exceeded 1023 characters.

       [ENOENT]		  A component of to prefix does	not exist.

       [EOPNOTSUPP]	  The  file  system  containing	the file pointed at by
			  fhp does not support links.

       [EMLINK]		  The link count of the	file pointed at	by  fhp	 would
			  exceed 32767.

       [EACCES]		  A component of to prefix denies search permission.

       [EACCES]		  The  requested  link requires	writing	in a directory
			  with a mode that denies write	permission.

       [ELOOP]		  Too many symbolic links were encountered  in	trans-
			  lating one of	the pathnames.

       [ENOENT]		  The file pointed at by fhp does not exist.

       [EEXIST]		  The link named by to does exist.

       [EPERM]		  The file pointed at by fhp is	a directory.

       [EPERM]		  The  file pointed at by fhp has its immutable	or ap-
			  pend-only flag set, see the chflags(2)  manual  page
			  for more information.

       [EPERM]		  The parent directory of the file named by to has its
			  immutable flag set.

       [EXDEV]		  The  link named by to	and the	file pointed at	by fhp
			  are on different file	systems.

       [ENOSPC]		  The directory	in which the entry for the new link is
			  being	placed cannot be extended because there	is  no
			  space	 left on the file system containing the	direc-
			  tory.

       [EDQUOT]		  The directory	in which the entry for the new link is
			  being	placed cannot be extended because  the	user's
			  quota	 of  disk blocks on the	file system containing
			  the directory	has been exhausted.

       [EIO]		  An I/O error occurred	while reading from or  writing
			  to the file system to	make the directory entry.

       [EINTEGRITY]	  Corrupted  data  was detected	while reading from the
			  file system.

       [EROFS]		  The requested	link requires writing in  a  directory
			  on a read-only file system.

       [EFAULT]		  One  of  the	pathnames  specified  is  outside  the
			  process's allocated address space.

       [ESTALE]		  The file handle fhp is no longer valid

       In addition to the errors returned by the fhlink(), the fhlinkat() sys-
       tem call	may fail if:

       [EBADF]		  The fhp or to	argument does not specify an  absolute
			  path	and  the  tofd argument, is not	AT_FDCWD nor a
			  valid	file descriptor	open for searching.

       [EINVAL]		  The value of the flag	argument is not	valid.

       [ENOTDIR]	  The fhp or to	argument is not	an absolute  path  and
			  tofd	is  not	AT_FDCWD nor a file descriptor associ-
			  ated with a directory.

SEE ALSO
       fhopen(2), fhreadlink(2), fhstat(2)

HISTORY
       The  fhlink()  and  fhlinkat()	system	 calls	 first	 appeared   in
       FreeBSD 12.1.

FreeBSD	13.2		       November	30, 2022		     FHLINK(2)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fhlinkat&sektion=2&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help