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