UNLINK(2) | System Calls Manual | UNLINK(2) |
unlink
, unlinkat
—
#include <unistd.h>
int
unlink
(const
char *path);
#include
<fcntl.h>
int
unlinkat
(int
fd, const char
*path, int
flag);
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.
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.
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.unlink
() function conforms to IEEE
Std 1003.1-1990 (“POSIX.1”).
unlinkat
() conforms to IEEE Std
1003.1-2008 (“POSIX.1”).
unlink
() function call appeared in
Version 1 AT&T UNIX.
September 2, 2019 | NetBSD 9.0 |