/dev/tty
est le terminal de contrôle du processus actuel , pour tout processus qui ouvre réellement ce fichier spécial. Ce n'est pas nécessairement un périphérique de console virtuelle (/dev/tty
n ), et peut être un pty, un port série, etc. Si le tty de contrôle n'est pas une console virtuelle, le processus n'a pas à interagir avec les périphériques de la console même si son pseudotty est réellement implémenté sur la console système. Par exemple. pour un shell dans un émulateur de terminal sous Xserver exécuté localement, lesdits programmes forment une chaîne d'interactions telle que :
Shell Unix
⇕ /dev/pts/2
(≡ /dev/tty
pour ses processus)
pilote pty du noyau
⇕ /dev/ptmx
émulateur de terminal
⇕ Protocole X Window
serveur X
⇕ /dev/tty7
(≡ /dev/tty
pour le serveur)
console système
z x c ↿⇂[_̈░░]
utilisateur
Utilisation de /dev/tty
par les programmes de l'espace utilisateur comprend :
- Écrivez quelque chose au terminal de contrôle, en ignorant toutes les redirections et les canaux ;
- Créer un ioctl() – voir tty_ioctl(4);
- Par exemple, détachez-vous du terminal (TIOCNOTTY).
/dev/tty0
est la console virtuelle actuellement active (c'est-à-dire visible sur le moniteur) du système d'exploitation . Il est peu probable que ce fichier spécial soit utilisé de manière significative par le logiciel système, mais /dev/console
est pratiquement un "alias" pour tty0
et /dev/console
est très utilisé par les démons syslog et, parfois, par le noyau lui-même.
Expérimentez pour montrer la différence :exécutez un root
shell sur tty3
(Ctrl +Alt +F3 ) ou dans un émulateur de terminal. Maintenant
# sleep 2; echo test >/dev/tty
puis rapidement Ctrl +Alt +F2 , attendez deux secondes et Ctrl +Alt + quel que soit le dos. Où voyez-vous la sortie ?
Et maintenant le même test pour /dev/tty0
.
/dev/tty est le tty de contrôle pour tout processus. Cela peut être votre shell.
Si votre processus n'a pas de tty de contrôle, /dev/tty n'est pas disponible, ceci par ex. est vrai pour les démons.
Si votre processus a un tty de contrôle, alors /dev/tty est un alias de pilote vers le véritable pilote tty que votre processus utilise pour stdin, stdout ou stderr.
Voir man -s7d tty
pour plus d'informations. Notez que la section où se trouve ce manuel peut différer d'un système d'exploitation à l'autre et ne doit pas être confondue avec la page de manuel de la section 1. Vérifiez donc par ex. man -k tty
.