link(2) link(2)
NAME
link - set up link to a file
SYNOPSIS
#include <unistd.h>
int link(const char *path1, const char *path2);
DESCRIPTION
path1 points to a pathname naming an existing file. path2 points to a
pathname naming the new directory entry to be created. link() creates
a new link (directory entry) for the existing file and increments the
link count by one.
Upon successful completion, link() marks for update the stctime field
of the file. Also, the stctime and stmtime fields of the directory
that contains the new entry are marked for update.
ERRORS
The following error code descriptions are function-specific. You will
find a general description in introprm2(2) or in errno(5).
link() will fail and no link will be created if one or more of the
following apply:
EACCES A component of either path prefix denies search permis-
sion, or the requested link requires writing in a direc-
tory with a mode that denies write permission, or the
calling process does not have permission to access the
existing file and this is required by the implementa-
tion.
EEXIST The link named by path2 exists.
EFAULT path1 or path2 points outside the allocated address
space of the process.
EINTR A signal was caught during the link() system call.
ELOOP Too many symbolic links were encountered in translating
path1 or path2.
EMLINK The maximum number of links to a file would exceed
LINKMAX.
EMULTIHOP Components of path1 or path2 require hopping to multiple
remote machines and the file system type does not allow
it.
ENAMETOOLONG The length of the path1 or path2 argument exceeds
PATHMAX or the length of a path1 or path2 component
exceeds NAMEMAX.
Page 1 Reliant UNIX 5.44 Printed 11/98
link(2) link(2)
ENOTDIR A component of either path prefix is not a directory.
ENOENT path1 or path2 is a null pathname.
ENOENT A component of either path prefix does not exist.
ENOENT The file named by path1 does not exist.
ENOLINK path1 or path2 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.
EPERM The file named by path1 is a directory and the effective
user ID is not superuser.
EROFS The requested link requires writing in a directory on a
read-only file system.
EXDEV The link named by path2 and the file named by path1 are
on different logical devices (file systems) and the
implementation does not support links between file sys-
tems, or path1 refers to a named STREAM.
The link() function may fail if:
ENAMETOOLONG Pathname resolution of a symbolic link produced an
intermediate result whose length exceeds PATHMAX.
RESULT
Upon successful completion, a value of 0 is returned. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
SEE ALSO
unlink(2), unistd(4).
Page 2 Reliant UNIX 5.44 Printed 11/98