NAME
symlink - Makes a symbolic link to a file
SYNOPSIS
#include <unistd.h>
int symlink (
const char *path1,
const char *path2 );
PARAMETERS
path1 Specifies the contents of the symbolic link to
create.
path2 Names the symbolic link to be created.
DESCRIPTION
The symlink() function creates a symbolic link with the name
specified by the path2 parameter which refers to the file
named by the path1 parameter.
Like a hard link (described in the link() function), a sym-
bolic link allows a file to have multiple names. The pres-
ence of a hard link guarantees the existence of a file, even
after the original name has been removed. A symbolic link
provides no such assurance; in fact, the file named by the
path1 parameter need not exist when the link is created.
Unlike hard links, a symbolic link can cross file system
boundaries.
When a component of a pathname refers to a symbolic link
rather than a directory, the pathname contained in the sym-
bolic link is resolved. If the pathname in the symbolic
link starts with a / (slash), the symbolic link pathname is
resolved relative to the process root directory. If the
pathname in the symbolic link does not start with a /
(slash), the symbolic link pathname is resolved relative to
the directory that contains the symbolic link.
If the symbolic link is the last component of the original
pathname, remaining components of the original pathname are
appended to the contents of the link and pathname resolution
continues.
The symbolic link pathname may or may not be traversed,
depending on which function is being performed. Most func-
tions traverse the link.
The functions which refer only to the symbolic link itself,
rather than to the object to which the link refers, are:
link() An error will be returned if a symbolic link is
named by the path2 parameter.
lstat() If the file specified is a symbolic link, the
status of the link itself is returned.
mknod() An error will be returned if a symbolic link is
named as the path parameter.
readlink()
This call applies only to symbolic links.
remove() A symbolic link can be removed by invoking the
remove() function.
rename() If the file to be renamed is a symbolic link, the
symbolic link is renamed. If the new name refers
to an existing symbolic link, the symbolic link is
destroyed.
rmdir() An error will be returned if a symbolic link is
named as the path parameter.
symlink() An error will be returned if the symbolic link
named by the path2 parameter already exists. A
symbolic link can be created that refers to
another symbolic link; that is, the path1 parame-
ter can refer to a symbolic link.
unlink() A symbolic link can be removed by invoking
unlink().
Search access to the symbolic link is required to traverse
the pathname contained therein. Normal permission checks
are made on each component of the symbolic link pathname
during its resolution.
NOTES
AES Support Level:
Trial use
RETURN VALUES
Upon successful completion, the symlink() function returns a
value of 0 (zero). If the symlink() function fails, a value
of -1 is returned and errno is set to indicate the error.
ERRORS
If the symlink() function fails, errno may be set to one of
the following values:
[EEXIST] The path specified by the path2 parameter already
exists.
[EACCES] The requested operation requires writing in a
directory with a mode that denies write permis-
sion, or search permission is denied on a com-
ponent of path2.
[EROFS] The requested operation requires writing in a
directory on a read-only file system.
[ENOSPC] The directory in which the entry for the symbolic
link is being placed cannot be extended because
there is no space left on the file system contain-
ing the directory.
[ENOSPC] The new symbolic link cannot be created because
there is no space left on the file system which
would contain the link.
[ENOSPC] There are no free inodes on the file system on
which the file is being created.
[EDQUOT] The directory in which the entry for the symbolic
link is being placed cannot be extended because
the user's quota of disk blocks on the file system
containing the directory has been exhausted.
[ENOENT] The path2 parameter points to a null pathname, or
a component of path2 does not exist.
[ENOTDIR] A component of path2 is not a directory.
[ENAMETOOLONG]
The length of the path1 parameter or path2 parame-
ter exceeds PATH_MAX, or a pathname component of
path2 is longer than NAME_MAX while
{_POSIX_NO_TRUNC} is in effect.
[ELOOP] Too many symbolic links are found in translating
path2.
RELATED INFORMATION
Functions: link(2), readlink(2), unlink(2)
Commands: ln(1)
Acknowledgement and Disclaimer