Isso está documentado na % man_de% página na seção 4 :
The file /dev/tty is a character file with major number 5 and minor number 0, usually of mode 0666 and owner.group root.tty. It is a synonym for the controlling terminal of a process, if any.
In addition to the
ioctl(2)
requests supported by the device that tty refers to, theioctl(2)
requestTIOCNOTTY
is supported.
TIOCNOTTY
Detach the calling process from its controlling terminal.
If the process is the session leader, then
SIGHUP
andSIGCONT
signals are sent to the foreground process group and all processes in the current session lose their controlling tty.This
ioctl(2)
call works only on file descriptors connected to /dev/tty. It is used by daemon processes when they are invoked by a user at a terminal. The process attempts to open /dev/tty. If the open succeeds, it detaches itself from the terminal by usingTIOCNOTTY
, while if the open fails, it is obviously not attached to a terminal and does not need to detach itself.
Isso explica em parte porque tty
não é um link simbólico para o terminal de controle: ele suporta um /dev/tty
adicional, e pode não haver um terminal de controle (mas um processo pode sempre tentar acessar ioctl
) .
/dev/tty
pode representar diferentes terminais de controle, sem ser um link, porque o driver que o implementa determina qual é o terminal de controle do processo de chamada, se houver.
Você pode pensar nisso como /dev/tty
sendo o terminal de controle e, portanto, oferecendo funcionalidade que só faz sentido para um terminal de controle, enquanto /dev/tty
etc. são terminais simples, um dos quais pode ser o terminal de controle para um determinado processo.