Manual Page Search Parameters

RMDIR(2) System Calls Manual RMDIR(2)


rmdirremove a directory file


#include <unistd.h>
rmdir(const char *path);


rmdir() removes a directory file whose name is given by path. The directory must not have any entries other than ‘.’ and ‘..’.
There is no rmdirat() function; to remove a directory with a path relative to the directory associated with a file descriptor use the unlinkat(2) function with the AT_REMOVEDIR flag.


Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.


The named file is removed unless:
A component of the path is not a directory.
A component of a pathname exceeded NAME_MAX characters, or an entire pathname (including the terminating NUL) exceeded PATH_MAX bytes.
The named directory does not exist.
Too many symbolic links were encountered in translating the pathname.
The named directory contains files other than ‘.’ and ‘..’ in it.
Search permission is denied for a component of the path prefix.
Write permission is denied on the directory containing the directory to be removed.
The directory containing the directory to be removed is marked sticky, and neither the containing directory nor the directory to be removed are owned by the effective user ID.
The directory to be removed or the directory containing it has its immutable or append-only flag set (see chflags(2)).
The directory to be removed is the mount point for a mounted file system or the current directory.
An I/O error occurred while deleting the directory entry or deallocating the inode.
The directory entry to be removed resides on a read-only file system.
path points outside the process's allocated address space.


rmdir(1), chflags(2), mkdir(2), unlink(2)


rmdir() function conforms to IEEE Std 1003.1-2008 (“POSIX.1”).


The rmdir() function call appeared in 4.2BSD.
January 19, 2015 OpenBSD-5.8