unlink - remove directory entry
int unlink(const char *path)
Unlink removes the entry for the file path from its directory. If this
entry was the last link to the file, and no process has the file open,
then all resources associated with the file are reclaimed. If, however,
the file was open in any process, the actual resource reclamation is
delayed until it is closed, even though the directory entry has
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] The path name exceeds PATH_MAX characters.
[ENOENT] The named file does not exist.
[EACCES] Search permission is denied for a component of the path
[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. (Minix-vmd)
[EPERM] The named file is 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. (Minix-vmd)
[EBUSY] The entry to be unlinked is the mount point for a mounted
[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).