UNLINK(2) SysV UNLINK(2)
NAME
unlink - Remove a directory entry
SYNOPSIS
int unlink (path)
const char *path;
DESCRIPTION
The unlink function removes the directory entry specified by the path
argument and, if the entry is a hard link, decrements the link count of
the file referenced by the link.
When all links to a file are removed and no process has the file open or
mapped, all resources associated with the file are reclaimed, and the
file is no longer accessible. If one or more processes have the file open
or mapped when the last link is removed, the link will be removed before
the unlink function returns, but the removal of the file contents is
postponed until all open or map references to the file are removed.
If the path argument names a symbolic link, the symbolic link itself is
removed.
If the path argument names a directory, unlink fails. unless the process
has ROOT privileges.
Upon successful completion, the unlink function marks for update the
st_ctime and st_mtime fields of the directory which contained the link.
If the file's link count is not 0 (zero), the st_ctime field of the file
is also marked for update.
DIAGNOSTICS
Upon successful completion, a value of 0 (zero) is returned. If the
unlink function fails, a value of -1 is returned, the named file is not
changed, and errno is set to indicate the error.
ERRORS
If the unlink function fails, the named file is not unlinked and errno is
set to one of the following values:
[ENOENT] The named file does not exist or the path argument points to an
empty string.
[EACCES] Search permission is denied for a component of the path prefix,
or write permission is denied on the directory containing the
link to be removed.
[EPERM] The named file is a directory, and the process does not have
ROOT privilege.
[EBUSY] The entry to be unlinked is the mount point for a mounted file
system.
[EROFS] The entry to be unlinked is part of a read-only file system.
[EFAULT] The path argument is an invalid address.
[ELOOP] Too many links were encountered in translating path.
[ENAMETOOLONG]
The length of the path argument exceeds PATH_MAX or a pathname
component is longer than NAME_MAX.
[ENOTDIR] A component of the path prefix is not a directory.
[ETXTBSY] The entry to be unlinked is the last link to a pure procedure
(shared text) file that is being executed.
[EINTR] A signal was caught during the unlink system call.
[EEXIST] The file named by path is a directory, the process has ROOT
privilege and the directory is not empty.
SEE ALSO
close(2), link(2), open(2), rmdir(2)