In POSIX systems, one file can have many names at the same time. All of the names are equally real, and no one of them is preferred to the others.
To add a name to a file, use the link
function. (The new name is also called a hard link to the file.) Creating a new link to a file does not copy the contents of the file; it simply makes a new name by which the file can be known, in addition to the file's existing name or names.
One file can have names in several directories, so the the organization of the file system is not a strict hierarchy or tree.
In most implementations, it is not possible to have hard links to the same file in multiple file systems. link
reports an error if you try to make a hard link to the file from another file system when this cannot be done.
The prototype for the link
function is declared in the header file `unistd.h'.
link
function makes a new link to the existing file named by oldname, under the new name newname.
This function returns a value of 0
if it is successful and -1
on failure. In addition to the usual file name syntax errors (see File Name Errors) for both oldname and newname, the following errno
error conditions are defined for this function:
EACCES
EEXIST
EMLINK
LINK_MAX
; see Limits for Files.) Well-designed file systems never report this error, because they permit more links than your disk could possibly hold. However, you must still take account of the possibility of this error, as it could result from network access to a file system on another machine.
ENOENT
ENOSPC
EPERM
EROFS
EXDEV