---
name: "TIOCNOTTY"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/TIOCSCTTY"
---

# TIOCNOTTY(2const)

controlling the terminal

Part of [TIOCSCTTY(2const)](/TIOCSCTTY/2const.md).

## NAME

TIOCSCTTY, TIOCNOTTY - controlling the terminal

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <asm/termbits.h>  /* Definition of TIOC*TTY constants */
#include <sys/ioctl.h>
```

**int ioctl(int** *fd***, TIOCSCTTY, int** *arg***);** **int ioctl(int** *fd***, TIOCNOTTY);**

## DESCRIPTION

- **TIOCSCTTY**

  Make the given terminal the controlling terminal of the calling process. The calling process must be a session leader and not have a controlling terminal already. For this case, *arg* should be specified as zero.

-

  If this terminal is already the controlling terminal of a different session group, then the ioctl fails with **EPERM**, unless the caller has the **CAP\_SYS\_ADMIN** capability and *arg* equals 1, in which case the terminal is stolen, and all processes that had it as controlling terminal lose it.

- **TIOCNOTTY**

  If the given terminal was the controlling terminal of the calling process, give up this controlling terminal. If the process was session leader, then send **SIGHUP** and **SIGCONT** to the foreground process group and all processes in the current session lose their controlling terminal.

## RETURN VALUE

On success, 0 is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

- **EPERM**

  Insufficient permission.

## SEE ALSO

[**ioctl**(2)](/ioctl/2.md), [**ioctl\_tty**(2)](/ioctl_tty/2.md)
