unlink - Remove a directory entry
const char *path );
Interfaces documented on this reference page conform to
industry standards as follows:
unlink(): XSH4.0, XSH4.2, XSH5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
Specifies the directory entry to be removed.
When the directory entry is a hard link, the unlink()
function removes it and decrements the link count of the
file referenced by the link. When the directory entry is a
symbolic link, the unlink() function removes the symbolic
link and does not affect any file or directory named by
the contents of the symbolic 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 is 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.
A hard link to a directory cannot be unlinked.
A process must have write access to the parent directory
of the file to be unlinked with respect to all access
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.
System V Compatibility [Toc] [Back]
[Tru64 UNIX] Any attempt to unlink non-empty directories
in the System V habitat will cause the unlink() call to
fail and set errno to [ENOTEMPTY], even if the process has
superuser privileges. This error behavior is provided in
the System V habitat to comply with the SVID-2 specification.
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.
If the unlink() function fails, the named file is not
unlinked and errno may be set to one of the following values:
One of the following conditions was encountered:
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. The S_ISVTX option is
set on the directory containing the file referred to by
the path argument and the caller is not the file owner,
nor is the caller the directory owner, nor does the caller
have appropriate privileges. One of the following conditions
was encountered: The entry to be unlinked is the
mount point for a mounted file system. The file named by
path is a named STREAM. [Tru64 UNIX] The path parameter
is an invalid address. Too many symbolic links were
encountered in translating path. The length of the path
parameter exceeds PATH_MAX or a pathname component is
longer than NAME_MAX; or, pathname resolution of a symbolic
link produced an intermediate result whose length
exceeds PATH_MAX. The named file does not exist or the
path parameter points to an empty string. A component of
the path prefix is not a directory. One of the following
conditions was encountered: The named file is a directory.
The S_ISVTX option is set on the directory containing the
file referred to by the path argument and the caller is
not the file owner, nor is the caller the directory owner,
nor does the caller have appropriate privileges. The
entry to be unlinked is part of a read-only file system.
The entry to be unlinked is the last directory entry to a
pure procedure (shared text) file that is being executed.
[Tru64 UNIX] For NFS file access, if the link() function
fails, errno may also be set to one of the following values:
Indicates either that the request was for a write
access to a file but the specified filename was actually a
directory, or that the function was trying to rename a
directory as a file. Indicates either that the system
file table is full, or that there are too many files currently
open in the system. Indicates a stale NFS file
handle. A client cannot delete a link because the server
has unmounted or unexported the remote directory; or the
directory that contains an file was either unmounted or
unexported by the server.
Commands: link(1), rm(1), unlink(1)
Functions: close(2), link(2), open(2), rmdir(2)
[ Back ]