Manual page for unlink(2)
unlink - remove directory entry
SYNOPSIS
#include <unistd.h>
int unlink(const char *path);
DESCRIPTION
The
unlink()
function removes a link to a file.
If
path
names a symbolic link,
unlink()
removes the symbolic link named by
path
and does not affect any file or directory named by the contents of the
symbolic link. Otherwise,
unlink()
removes the link named by the pathname pointed to by
path
and decrements the link count of the file referenced by the link.
When the file's link count becomes 0 and no process has the
file open, the space occupied by the file will be freed and the
file will no longer be accessible.
If one or more processes have the file open when the last link is
removed, the link will be removed before
unlink()
returns, but
the removal of the file contents will be postponed until all
references to the file are closed.
The
path
argument must not name a directory unless the process has
appropriate privileges and the implementation supports using
unlink()
on directories.
Upon successful completion,
unlink()
will mark for update the
st_ctime
and
st_mtime
fields of the parent directory. Also, if the file's link count is not 0, the
st_ctime
field of the file will be marked for update.
RETURN VALUES
Upon successful completion,
0
is returned. Otherwise,
-1
is returned and
errno
is set to indicate the error.
ERRORS
The
unlink()
function will fail and not unlink the file if:
- EACCES
-
Search permission is denied for a component of the
path
prefix.
- EACCES
-
Write permission is denied on the directory containing the link
to be removed.
- EACCES
-
The parent directory has the sticky bit set and
the file is not writable by the user;
the user does not own the parent directory and
the user does not own the file.
- EBUSY
-
The entry to be unlinked is the mount point for a mounted file system.
- EFAULT
-
path
points to an illegal address.
- EINTR
-
A signal was caught during the
unlink()
function.
- ELOOP
-
Too many symbolic links were encountered in translating path.
- EMULTIHOP
-
Components of path require hopping to multiple
remote machines
and the file system does not allow it.
- ENAMETOOLONG
-
The length of the path argument exceeds {PATH_MAX},
or the length of a path component exceeds {NAME_MAX}
while {_POSIX_NO_TRUNC} is in effect.
- ENOENT
-
The named file does not exist or is a null pathname.
- ENOLINK
-
path points to a remote machine and the link
to that machine is no longer active.
- ENOTDIR
-
A component of the
path
prefix
is not a directory.
- EPERM
-
The named file is a directory and
the effective user of the calling process is not super-user.
- EROFS
-
The directory entry to be unlinked is part of a
read-only file system.
The
unlink()
function may fail and not unlink the file if:
- ENAMETOOLONG
-
Pathname resolution of a symbolic link produced an intermediate result whose
length exceeds PATH_MAX.
- ETXTBSY
-
The entry to be unlinked is the last directory entry to
a pure procedure (shared text) file
that is being executed.
USAGE
Applications should use
rmdir.2
to remove a directory.
ATTRIBUTES
See
attributes.5
for descriptions of the following attributes:
+---------------+-------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-------------------+
|MT-Level | Async-Signal-Safe |
+---------------+-------------------+
SEE ALSO
rm.1
close.2
link.2
open.2
rmdir.2
remove.3c
attributes.5
Created by unroff & hp-tools.
© by Hans-Peter Bischof. All Rights Reserved (1997).
Last modified 07/October/97