Copyright © tutorialspoint.com
int link(const char *oldpath, const char *newpath);
If newpath exists it will not be overwritten.
This new name may be used exactly as the old one for any operation; both names refer to the same file (and so have the same permissions and ownership) and it is impossible to tell which name was the `original.
| Tag | Description |
|---|---|
| EACCES | Write access to the directory containing newpath is denied, or search permission is denied for one of the directories in the path prefix of oldpath or newpath. (See also path_resolution(2).) |
| EEXIST | newpath already exists. |
| EFAULT | oldpath or newpath points outside your accessible address space. |
| EIO | An I/O error occurred. |
| ELOOP | Too many symbolic links were encountered in resolving oldpath or newpath. |
| EMLINK | The file referred to by oldpath already has the maximum number of links to it. |
| ENAMETOOLONG | |
| oldpath or newpath was too long. | |
| ENOENT | A directory component in oldpath or newpath does not exist or is a dangling symbolic link. |
| ENOMEM | Insufficient kernel memory was available. |
| ENOSPC | The device containing the file has no room for the new directory entry. |
| ENOTDIR | |
| A component used as a directory in oldpath or newpath is not, in fact, a directory. | |
| EPERM | oldpath is a directory. |
| EPERM | The filesystem containing oldpath and newpath does not support the creation of hard links. |
| EROFS | The file is on a read-only filesystem. |
| EXDEV | oldpath and newpath are not on the same mounted filesystem. (Linux permits a filesystem to be mounted at multiple points, but link(2) does not work across different mount points, even if the same filesystem is mounted on both.) |
POSIX.1-2001 says that link() should dereference oldpath if it is a symbolic link. However, Linux does not do so: if oldpath is a symbolic link, then newpath is created as a (hard) link to the same symbolic link file (i.e., newpath becomes a symbolic link to the same file that oldpath refers to). Some other implementations behave in the same manner as Linux.
Copyright © tutorialspoint.com