System Calls                                              link(2)

NAME
     link - link to a file

SYNOPSIS
     #include <unistd.h>

     int link(const char *existing, const char *new);

DESCRIPTION
     The link() function creates a new link (directory entry) for
     the existing file and increments its link count by one. The
     existing argument points to a path name naming  an  existing
     file.   The new argument points to a pathname naming the new
     directory entry to be created.

     To create hard links, both files must be on  the  same  file
     system. Both the old and the new link share equal access and
     rights to the underlying object.  The  super-user  may  make
     multiple  links  to  a  directory.  Unless the caller is the
     super-user, the file named by existing must not be a  direc-
     tory.

     Upon successful completion,  link()  marks  for  update  the
     st_ctime  field of the file. Also, the st_ctime and st_mtime
     fields of the directory that  contains  the  new  entry  are
     marked for update.

RETURN VALUES
     Upon successful completion, 0 is returned. Otherwise, -1  is
     returned,  no  link is created, and errno is set to indicate
     the error.

ERRORS
     The link() function will fail if:

     EACCES    A component of either path  prefix  denies  search
               permission, or the requested link requires writing
               in a directory with a mode that denies write  per-
               mission.

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

     EEXIST    The link named by new exists.

     EFAULT    The existing or new argument points to an  illegal
               address.

     EINTR     A signal was caught during the  execution  of  the
               link() function.


System Calls                                              link(2)

     ELOOP     Too  many  symbolic  links  were  encountered   in
               translating path.

     EMLINK    The maximum number of links to  a  file  would  be
               exceeded.

     ENAMETOOLONG
               The length of the existing or new argument exceeds
               PATH_MAX,  or the length of a existing or new com-
               ponent exceeds NAME_MAX while  _POSIX_NO_TRUNC  is
               in effect.

     ENOENT    The existing or new argument is a null pathname; a
               component of either path prefix does not exist; or
               the file named by existing does not exist.

     ENOLINK   The existing or new argument points  to  a  remote
               machine  and the link to that machine is no longer
               active.

     ENOSPC    The directory that would contain the  link  cannot
               be extended.

     ENOTDIR   A component of either path prefix is not a  direc-
               tory.

     EPERM     The file named by existing is a directory and  the
               effective  user  of  the  calling  process  is not
               super-user.

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

     EXDEV     The link named by new and the file named by exist-
               ing  are  on  different logical devices (file sys-
               tems).


SEE ALSO
     symlink(2), unlink(2)

Everything2         Last change: 5 July 2000                    2

Log in or register to write something here or to contact authors.