p
.Fn unlinkat
works the same way as
.Fn unlink
except if
.Fa path
is relative.
In that case, it is looked up from a directory whose file
descriptor was passed as
.Fa fd .
Search permission is required on this directory.
(These alternatives await a decision about the semantics of O_SEARCH)
Search permission is required on this directory
except if
.Fa fd
was opened with the
.Dv O_SEARCH
flag.
- or -
This file descriptor must have been opened with the
.Dv O_SEARCH
flag.
.Fa fd
can be set to
.Dv AT_FDCWD
in order to specify the current directory.
p .Fn unlinkat will remove directories just like .Xr rmdir 2 , provided .Dv AT_REMOVEDIR is set in .Fa flag . .Sh RETURN VALUES .Rv -std unlink unlinkat .Sh ERRORS The .Fn unlink and .Fn unlinkat functions succeed unless: l -tag -width Er t Bq Er EACCES Search permission is denied for a component of the path prefix, or write permission is denied on the directory containing the link to be removed. t Bq Er EBUSY The entry to be unlinked is the mount point for a mounted file system. t Bq Er EFAULT .Fa path points outside the process's allocated address space. t Bq Er EIO An I/O error occurred while deleting the directory entry or deallocating the inode. t Bq Er ELOOP Too many symbolic links were encountered in translating the pathname. t Bq Er ENAMETOOLONG A component of a pathname exceeded rq Dv NAME_MAX characters, or an entire path name exceeded rq Dv PATH_MAX characters. t Bq Er ENOENT The named file does not exist. t Bq Er ENOTDIR A component of the path prefix is not a directory. t Bq Er EPERM The named file is a directory and the effective user ID of the process is not the super-user, the file system containing the file does not permit the use of .Fn 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. t Bq Er EROFS The named file resides on a read-only file system. .El
p In addition, .Fn unlinkat will fail if: l -tag -width Er t Bq Er EBADF .Fa path does not specify an absolute path and .Fa fd is neither .Dv AT_FDCWD nor a valid file descriptor open for reading or searching. t Bq Er ENOTDIR .Fa path is not an absolute path and .Fa fd is a file descriptor associated with a non-directory file; or .Fa flag has .Dv AT_REMOVEDIR set and .Fa path does not name a directory. t Bq Er ENOTEMPTY .Fa flag has .Dv AT_REMOVEDIR set and .Fa path is a directory that is not empty. .El .Sh SEE ALSO .Xr close 2 , .Xr link 2 , .Xr rmdir 2 , .Xr symlink 7 .Sh STANDARDS The .Fn unlink function conforms to .St -p1003.1-90 . .Fn unlinkat conforms to .St -p1003.1-2008 . .Sh HISTORY An .Fn unlink function call appeared in .At v1 .