unlink(2) unlink(2)
NAME
unlink - remove directory entry
SYNOPSIS
#include <unistd.h>
int unlink(const char *path);
DESCRIPTION
unlink removes the directory entry named by the pathname
pointed to by the argument path and decrements the link count
of the file referenced by the directory entry. When all links
to a file have been removed and no process has an outstanding
reference to the file, the space occupied by the file is freed
and the file ceases to exist. If one or more processes have
outstanding references to the file when the last link is
removed, space occupied by the file is not released until all
references to the file have been removed. If path is a
symbolic link, the symbolic link is removed. The path
argument should not name a directory unless the process has
appropriate privileges and the implementation supports unlink
on directories. Applications should use rmdir to remove
directories.
Return Values
On success, unlink returns 0 and marks for update the st_ctime
and st_mtime fields of the parent directory. Also, if the
file's link count is not zero, the st_ctime field of the file
is marked for update. On failure, unlink returns -1, sets
errno to identify the error, and the file is not unlinked.
Errors
In the following conditions, unlink fails and sets errno to:
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 and the process does not have
the P_COMPAT privilege.
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;
EACCES. Write permission is denied on the file named
by path.
Copyright 1994 Novell, Inc. Page 1
unlink(2) unlink(2)
EBUSY The entry to be unlinked is the mount point for a
mounted file system.
EFAULT path points outside the process's allocated address
space.
EINTR A signal was caught during the unlink system call.
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.
The user is not a super-user.
ENOTDIR
A component of the path prefix is not a directory.
EPERM The named file is a directory and the calling process
does not have the P_FILESYS privilege.
EROFS The directory entry to be unlinked is part of a read-
only file system.
ENOLINK
path points to a remote machine and the link to that
machine is no longer active.
REFERENCES
close(2), link(2), open(2), rm(1), rmdir(2)
Copyright 1994 Novell, Inc. Page 2