unlink - remove directory entry
#include <unistd.h>
int
unlink(const char *path);
The unlink() function removes the link named by path from
its directory
and decrements the link count of the file which was referenced by the
link. If that decrement reduces the link count of the file
to zero, and
no process has the file open, then all resources associated
with the file
are reclaimed. If one or more processes have the file open
when the last
link is removed, the link is removed, but the removal of the
file is delayed
until all references to it have been closed.
Upon successful completion, a value of 0 is returned. Otherwise, a value
of -1 is returned and errno is set to indicate the error.
The unlink() succeeds unless:
[ENOTDIR] A component of the path prefix is not a directory.
[ENAMETOOLONG]
A component of a pathname exceeded {NAME_MAX}
characters,
or an entire path name exceeded {PATH_MAX}
characters.
[ENOENT] The named file does not exist.
[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.
[ELOOP] Too many symbolic links were encountered in
translating the
pathname.
[EPERM] The named file is a directory and the effective user ID of
the process is not the superuser, or the file
system containing
the file does not permit the use of
unlink() on a
directory.
[EPERM] The directory containing the file is marked
sticky, and
neither the containing directory nor the file
to be removed
are owned by the effective user ID.
[EPERM] The named file has its immutable or append-only flag set
(see chflags(2)).
[EBUSY] The entry to be unlinked is the mount point
for a mounted
file system.
[EIO] An I/O error occurred while deleting the directory entry or
deallocating the inode.
[EROFS] The named file resides on a read-only file
system.
[EFAULT] path points outside the process's allocated
address space.
close(2), link(2), rmdir(2), symlink(7)
An unlink() function call appeared in Version 2 AT&T UNIX.
OpenBSD 3.6 June 4, 1993
[ Back ] |