---
name: "rmdir"
section: "2freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rmdir/2freebsd"
---

# rmdir(2freebsd)

remove a directory file

## NAME

**rmdir** – remove a directory file

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<unistd.h\>**

*int*\

**rmdir**(*const char \*path*);

## DESCRIPTION

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

## RETURN VALUES

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.

## ERRORS

The named file is removed unless:

- \[ENOTDIR\]

  A component of the path is not a directory.

- \[ENAMETOOLONG\]

  A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters.

- \[ENOENT\]

  The named directory does not exist.

- \[ELOOP\]

  Too many symbolic links were encountered in translating the pathname.

- \[ENOTEMPTY\]

  The named directory contains files other than ‘.’ and ‘..’ in it.

- \[EACCES\]

  Search permission is denied for a component of the path prefix.

- \[EACCES\]

  Write permission is denied on the directory containing the link to be removed.

- \[EPERM\]

  The directory to be removed has its immutable, undeletable or append-only flag set, see the [chflags(2)](/chflags/2.md) manual page for more information.

- \[EPERM\]

  The parent directory of the directory to be removed has its immutable or append-only flag set.

- \[EPERM\]

  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.

- \[EINVAL\]

  The last component of the path is ‘.’ or ‘..’.

- \[EBUSY\]

  The directory to be removed is the mount point for a mounted file system.

- \[EIO\]

  An I/O error occurred while deleting the directory entry or deallocating the inode.

- \[EINTEGRITY\]

  Corrupted data was detected while reading from the file system.

- \[EROFS\]

  The directory entry to be removed resides on a read-only file system.

- \[EFAULT\]

  The *path* argument points outside the process's allocated address space.

## SEE ALSO

[mkdir(2)](/mkdir/2.md), [unlink(2)](/unlink/2.md)

## HISTORY

The **rmdir**() system call appeared in 4.2BSD.
