# link(2)

## NAME

         link - make a hard link to a file

## SYNOPSIS

         #include <unistd.h>

         int link(const char *name1, const char *name2)

## DESCRIPTION

         A hard link to name1 is created; the link has the name name2.  Name1 must
         exist.

         With hard links, both name1 and name2 must be in the  same  file  system.
         Name1 must not be a directory.  Both the old and the new link share equal
         access and rights to the underlying object.

## RETURN VALUE

         Upon successful completion, a value of 0 is returned.  Otherwise, a value
         of -1 is returned and errno is set to indicate the error.

## ERRORS

         Link will fail and no link  will  be  created  if  one  or  more  of  the
         following are true:

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

         [ENAMETOOLONG] A path name exceeds PATH_MAX characters.

         [ENOENT]       A component of either path prefix does not exist.

         [EACCES]       A  component  of  either   path   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  translating
                        one of the pathnames.  (Minix-vmd)

         [ENOENT]       The file named by name1 does not exist.

         [EEXIST]       The link named by name2 does exist.

         [EPERM]        The file named by name1 is a directory and  the  effective
                        user ID is not super-user.

         [EXDEV]        The link named by name2 and the file named by name1 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 directory.

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

         [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.

## SEE ALSO

         symlink(2), unlink(2).