Page suivante - Page précédente - Table des matières

6. Fichiers spéciaux pour les terminaux tels que /dev/tty

"tty" est l'abréviation de "Teletype". Les premiers terminaux étaient des télétypes (comme machine à écrire pilotée à distance). Voyez la sous-section télétypes. On trouve une liste des périphériques Linux (ce qui se trouve dans le répertoire /dev) dans "Linux Allocated Devices" (en français "Périphériques référencés sous Linux"), normalement inclus dans les sources du noyau. Il "décrit" à quoi sert un périphérique en un mot ou deux mais ne vous dit pas comment l'utiliser.

6.1 Terminaux sur port série

L'ordinateur considère chaque port série comme un "périphérique". On l'appelle parfois périphérique terminal puisqu'à un moment les terminaux représentaient une utilisation courante des ports série. Pour chacun de ces ports série, il existe un fichier spécial dans le répertoire /dev (device : périphérique). /dev/ttyS0 est le fichier spécial pour le port série connu sous le nom COM1 dans le monde DOS/Windows. Pour envoyer du texte à un terminal vous pouvez rediriger la sortie standard de certains programmes en ligne de commande vers le fichier spécial approprié. Par exemple en tapant "echo test> /dev/ttyS1" à l'invite de commandes, le mot "test" devrait être envoyé sur le terminal sur ttyS1 (COM2) à condition que vous ayez la permission d'écrire sur /dev/ttyS1. De même, taper "cat mon_fichier> /dev/ttyS0" enverra le contenu du fichier mon_fichier sur COM1 (ttyS0).

En plus de ttyS0 (/dev/ttyS0), ttyS1, ttyS2, etc. (le "S" veut dire port Série) il y a aussi une série de "cua" : cua0, cua1, cua2, etc. cua0 correspond au même port que ttyS0, etc. Le "cu" dans cua veut dire CalloUt (appel sortant). Les séries ttyS sont conformes à Posix alors que l'utilisation de cua peut permettre l'ouverture d'un port dont les lignes de contrôles du modem affirment qu'il n'est pas prêt. À partir du noyau 2.2 cua est obsolète et un message d'avertissement est affiché quand vous essayez de l'utiliser (bien qu'il fonctionne encore). Pendant les dernières années, il n'était présent dans Linux que pour assurer une compatibilité ascendante. Un programmeur peut faire en sorte que ttyS se comporte comme cua, et donc cua n'est pas vraiment utile.

6.2 Pseudo-terminaux

Les pseudo-terminaux n'ont pas de connecteur physique sur l'ordinateur. On les utilise pour émuler un port série. Ils n'ont pas d'adresses E/S (IO) ni d'IRQ. Par exemple, si quelqu'un se connecte grâce à telnet sur votre ordinateur à travers un réseau, il peut se trouver connecté au périphérique /dev/ptyp2 (un port de pseudo-terminal). Dans X Window, le programme d'émulation de terminal, xterm (ou rxvt), utilise des pseudo-terminaux. Les programmes pour les radioamateurs sous Linux les utilisent aussi. Avec certaines applications, il est possible d'attacher deux ou plus de deux pseudo-terminaux sur le même port série physique.

Les pseudo-terminaux vont par deux comme ttyp3 et ptyp3. La série pty... est le terminal maître ou contrôleur et la série tty... est l'esclave. ttyq5 est aussi un pseudo-terminal comme l'est ttysc (``c'' est un chiffre hexadécimal). Plus précisément, les pseudo-terminaux maîtres sont /dev/pty[p-s]N et les esclaves correspondants sont /dev/tty[p-s]N où N est un chiffre hexadécimal entre 0 et f. L'esclave /dev/ttyp agit comme un port série pour une application, elle peut y lire et y écrire. Cependant, l'application communique vraiment avec quelque soit le programme qui ecrit et lit au maitre /dev/pty correspondant. Aussi le maitre et l'esclave sont vraiment le meme "port" mais un est utilisé par l'application et l'autre par un programme réseau (ou l'équivalent) qui envoit (et récupère) des données au (et du) "port".

La norme Unix98 n'utilise pas les conventions ci-dessus, mais utilise à la place un "pty maître" qui est /dev/ptmx. Celui-ci peut fournir un pty à la demande. Les détails sur l'utilisation des pseudo-terminaux avec d'autres programmes programmes se trouvent dans quelques pages de manuels, mais un manuel dédié seulement aux pseudo-terminaux est nécéssaire pour Linux. D'autres unix-like ont une telle page nommée "pty - pseudo terminal driver".

6.3 Le terminal contrôlant /dev/tty

/dev/tty est le terminal contrôlant (s'il y en a un) le processus en cours. Pour déterminer uels ttys sont attachés à quels processus, utilisez la commande "ps -a" à l'invite de commandes (la ligne de commandes). Regardez la colonne "tty". Pour le processus shell que vous utilisez, /dev/tty est le terminal que vous utilisez à l'instant. Tapez "tty" à l'invite de commandes pour voir lequel c'est (voyez la page de manuel tty(1)). /dev/tty est quelque chose semblable à un lien vers le nom de périphérique du terminal en cours avec certaines possibilités supplémentaires pour les programmeurs en C : voyez la page de manuel tty(4).

6.4 "Terminaux" /dev/ttyIN

N représente un entier. L'une des utilisations possibles de ces terminaux dans Linux est le paquet du pilote ISDN (RNIS) : isdn4linux. La série ttyIN ressemble à ttySN. Il y a aussi une série cuiN qui ressemble à cuaN. Les séries ttyI et cui émulent des modems et on peut leur envoyer des commandes de modems.

6.5 La console : /dev/ttyN

Dans Linux le moniteur du PC est en général appelé la console et on lui associe plusieurs fichiers spéciaux de périphériques : tty0, tty1, tty2, etc. Quand vous vous loggez vous êtes sur le tty1. Pour aller sur le tty2(sur le meme ecran) appuyez sur Alt-F2, pour tty3 appuyez sur Alt(Gauche)-F3. Ces (tty1, tty2, tty3, etc.) sont appellés "terminaux virtuels". tty0 est juste un alias pour le terminal virtuel courant et c'est celui ou sont envoyés les messages du système. Aussi, les messages seront affichés sur la console (moniteur) sans se coucier de quel terminal virtuel est affiché.

Vous pouvez vous logger sur différents terminaux virtuels et ainsi avoir plusieurs sessions différentes tournant en même temps sur l'ordinateur. Seuls le système et l'utilisateur root peuvent écrire dans /dev/tty0 à laquelle /dev/console est quelquefois liée. Pour plus d'informations sur la console, voyez la console Linux.

6.6 Créer un périphérique avec "mknod"

Le répertoire /dev est installé avec beaucoup de fichiers spéciaux de périphériques. Si vous avez besoin de quelque chose non présent dans ce répertoire, vous pouvez essayer de le créer avec la commande "mknod". Voyez la page de manuel de ttys(4) pour savoir comment le faire pour les ports série. Pour utiliser mknod vous devez connaître les numéros de périphériques mineur et majeur. Vous pourriez déduire les numéros dont vous avez besoin en utilisant la commande "ls -l" dans le répertoire /dev. Elle affichera les numéros majeur et mineur des fichiers spéciaux existants.


Page suivante - Page précédente - Table des matières