Scroll to navigation

RMDIR(2) System Calls Manual RMDIR(2)


remove a directory file


Standard C Library (libc, -lc)


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


The rmdir() system call removes a directory file whose name is given by path. The directory must not have any entries other than ‘.’ and ‘..’.


The rmdir() function returns the value 0 if successful; 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 255 characters, or an entire path name exceeded 1023 characters.
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 link to be removed.
The directory to be removed has its immutable, undeletable or append-only flag set, see the chflags(2) manual page for more information.
The parent directory of the directory to be removed has its immutable or append-only flag set.
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 last component of the path is ‘.’ or ‘..’.
The directory to be removed is the mount point for a mounted file system.
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.
The path argument points outside the process's allocated address space.


mkdir(2), unlink(2)


The rmdir() system call appeared in 4.2BSD.
December 9, 2006 Debian