GNU/Linux >> Tutoriels Linux >  >> Linux

Comment Linux utilise /dev/tty et /dev/tty0

/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 .


Linux
  1. Comment générer un mot de passe aléatoire sous Linux en utilisant /dev/random

  2. Quelle est la portabilité de /dev/stdin, /dev/stdout et /dev/stderr ?

  3. Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

  4. Que sont les fichiers /dev/zero et /dev/null sous Linux

  5. Comment encoder en base64 /dev/random ou /dev/urandom ?

Comment remplacer un disque dur défaillant dans un RAID logiciel Linux

tty (/dev/tty ) vs pts (/dev/pts) sous Linux

Est-ce une erreur de lier /dev/random à /dev/urandom sous Linux ?

echo ou print /dev/stdin /dev/stdout /dev/stderr

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp

Différences entre /dev/sda et /dev/sda1