| UNLINK(2) | System Calls Manual | UNLINK(2) |
unlink, unlinkat
— remove directory entry
Standard C Library (libc, -lc)
#include
<unistd.h>
int
unlink(const
char *path);
#include
<fcntl.h>
int
unlinkat(int
fd, const char
*path, int
flag);
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 process 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.
unlinkat()
works the same way as unlink() except if
path is relative. In that case, it is looked up from a
directory whose file descriptor was passed as fd.
Search permission is required on this directory. fd
can be set to AT_FDCWD in order to specify the
current directory.
unlinkat()
will remove directories just like
rmdir(2), provided
AT_REMOVEDIR is set in
flag.
The unlink() and
unlinkat() functions return the value 0 if
successful; otherwise the value -1 is returned and the global
variable errno is set to indicate the error.
The unlink() and
unlinkat() functions succeed unless:
EACCES]EBUSY]EFAULT]EIO]ELOOP]ENAMETOOLONG]NAME_MAX}
characters, or an entire path name exceeded
{PATH_MAX} characters.ENOENT]ENOTDIR]EPERM]unlink() on a directory, or 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.EROFS]In addition, unlinkat() will fail if:
EBADF]AT_FDCWD nor a
valid file descriptor open for reading or searching.ENOTDIR]AT_REMOVEDIR set and path
does not name a directory.ENOTEMPTY]AT_REMOVEDIR set
and path is a directory that is not empty.The unlink() function conforms to
IEEE Std 1003.1-1990 (“POSIX.1”).
unlinkat() conforms to IEEE Std
1003.1-2008 (“POSIX.1”).
An unlink() function call appeared in
Version 1 AT&T UNIX.
| September 2, 2019 | NetBSD 11.0 |