---
name: "revoke"
section: "2"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/revoke/2"
---

# revoke(2)

revoke file access

## NAME

**revoke** – revoke file access

## SYNOPSIS

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

*int*\

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

## DESCRIPTION

The **revoke** function invalidates all current open file descriptors in the system for the file named by *path*. Subsequent operations on any such descriptors fail, with the exceptions that a **read**() from a terminal device file which has been revoked returns a count of zero (end of file), and a **close**() call will succeed. If the file is a special file for a device which is open, the device close function is called as if all open references to the file had been closed.

Access to a file may be revoked only by its owner or the super user. The **revoke** function is currently supported only for block and character special device files. It is normally used to prepare a terminal device for a new login session, preventing any access by a previous user of the terminal.

## RETURN VALUES

A 0 value indicated that the call succeeded.  A -1 return value indicates an error occurred and *errno* is set to indicated the reason.

## ERRORS

Access to the named file is revoked unless one of the following:

- \[ENOTDIR\]

  A component of the path prefix is not a directory.

- \[ENAMETOOLONG\]

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

- \[ENOENT\]

  The named file or a component of the path name does not exist.

- \[EACCES\]

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

- \[ELOOP\]

  Too many symbolic links were encountered in translating the pathname.

- \[EFAULT\]

  *Path* points outside the process's allocated address space.

- \[EINVAL\]

  The named file is neither a character special or block special file.

- \[EPERM\]

  The caller is neither the owner of the file nor the super user.

- \[ENOTSUP\]

  The path does not represent a block or character device.

- \[EBUSY\]

  The path represents a block device which is providing the backing for a mounted volume.

## SEE ALSO

[close(2)](/close/2.md)

## HISTORY

The **revoke** function was introduced in 4.3BSD-Reno.
