Fichier spécial pty

Objectif

Fournit le pilote de périphérique pseudo-terminal (pty).

Descriptif

Le pilote de périphérique pty prend en charge un pseudo-terminal. Un pseudo-terminal inclut une paire d'unités de type contrôleur et agent .
Remarque: Les unités de contrôleur et d'agent sont classiquement appelées unités maître et serveur. Ces termes sont utilisés de façon interchangeable pour utiliser une langue plus inclusive.
Le périphérique de travail fournit des processus avec essentiellement la même interface que celle fournie par le pilote de périphérique tty . Cependant, au lieu de fournir un support pour un dispositif matériel, le dispositif de travail est manipulé par un autre processus à travers la moitié de contrôle du pseudo-terminal. C'est-à-dire que tout ce qui est écrit sur l'unité de contrôle est donné à l'unité de travail en tant qu'entrée et que tout ce qui est écrit sur l'unité de travail est présenté en tant qu'entrée sur l'unité de contrôle.

Dans AIX Version 4, le sous-système pty utilise des conventions de dénomination similaires à celles du système V d'UNIX. Il y a un nœud pour le pilote de contrôle, /dev/ptc, et un nombre maximum de N nœuds pour les pilotes de travail, /dev/pts/n . N est configurable lors de la configuration de la quantité et peut être modifié dynamiquement par la reconfiguration de la quantité, sans fermer les unités ouvertes.

L'unité de contrôle est configurée en tant qu' unité clone dont le numéro d'unité principal est le numéro d'unité principal de l'unité clone et dont le numéro d'unité secondaire est le numéro d'unité principal du pilote de contrôle. Il n'y a pas de noeud dans le système de fichiers pour les unités de contrôle. Une unité de contrôle ne peut être ouverte qu'une seule fois, mais les unités de travail peuvent être ouvertes plusieurs fois.

En ouvrant l'unité de contrôle avec le fichier spécial /dev/ptc , une application peut ouvrir rapidement les côtés de contrôle et d'agent d'un pseudo-terminal non utilisé. Le nom du côté de l'agent correspondant peut être extrait à l'aide de la sous-routine ttyname , qui renvoie toujours le nom du côté de l'agent.

Avec les sous-systèmes de Berkeley pty, les commandes doivent rechercher un pseudo-terminal inutilisé en ouvrant chaque côté de contrôle séquentiellement. Le côté de contrôle n'a pas pu être ouvert s'il était déjà utilisé. Ainsi, les ouvertures échoueraient, en définissant la variable errno sur EIO, jusqu'à ce qu'un pseudo-terminal inutilisé soit trouvé. Il est possible de configurer le sous-système pty afin d'utiliser des fichiers spéciaux avec la convention de dénomination pty BSD:

Article Descriptif
Unités de contrôle /dev/pty[p-zA-Z][0-f]
unités d'agent /dev/tty[p-zA-Z][0-f]

Ces fichiers spéciaux ne sont pas des liens symboliques vers les fichiers spéciaux du système d'exploitation. Ils sont complètement séparés. Le nombre d'unités de contrôle et de paires d'agents utilisant la convention de dénomination BSD est configurable.

Les commandes ioctl suivantes s'appliquent aux pseudo-terminaux:

Article Descriptif
ARRET DE TIOC Arrête la sortie vers un terminal. C'est la même chose que d'utiliser la séquence de touches Ctrl-S. Aucun paramètre n'est autorisé pour cette commande.
DEMARRAGE Redémarre la sortie qui a été arrêtée par une commande TIOCSTOP ou par la séquence de touches Ctrl-S. Cela revient à taper la séquence de touches Ctrl-Q. Aucun paramètre n'est autorisé pour cette commande.
TIOCPKT Active et désactive le mode paquet. Le mode paquet est activé en spécifiant (par référence) un paramètre différent de zéro. Il est désactivé en spécifiant (par référence) un paramètre zéro. Appliquée sur le côté contrôle d'un pseudo-terminal, chaque lecture ultérieure du terminal renvoie des données écrites sur la partie agent du pseudo-terminal. Les données sont précédées soit d'un octet zéro (défini symboliquement comme TIOCPKT_DATA), soit d'un octet unique qui reflète les informations de statut de contrôle. Dans ce dernier cas, l'octet est un OU inclusif de zéro ou plus des bits suivants:
TIOCPKT_FLUSHREAD
La file d'attente d'entrée du terminal est vidée.
TIOCPKT_FLUSHWRITE
La file d'attente d'écriture du terminal est vidée.
TIOCPKT_STOP
La sortie vers le terminal est arrêtée avec Ctrl-S.
TIOCPKT_START
La sortie vers le terminal est redémarrée.
TIOCPKT_DOSTOP
Le caractère d'arrêt défini par la discipline de ligne tty en cours est Ctrl-S ; le caractère de début défini par la discipline de ligne est Ctrl-Q.
TIOCPKT_NOSTOP
Les caractères de début et de fin ne sont pas Ctrl-S et Ctrl-Q.

Lors de l'utilisation de ce mode, la présence d'informations d'état de contrôle à lire du côté de la commande peut être détectée par une sélection pour des conditions exceptionnelles.

Ce mode est utilisé par les commandes rlogin et rlogind pour se connecter à un hôte distant et implémenter le contrôle de flux Ctrl-S et Ctrl-Q local avec un vidage arrière approprié de la sortie.

TIOCUCNTL Active et désactive un mode qui permet à un petit nombre de commandes ioctl utilisateur simple d'être transmises via le pseudo-terminal, à l'aide d'un protocole similaire à celui du mode TIOCPKT . Les modes TIOCUCNTL et TIOCPKT s'excluent mutuellement.

Ce mode est activé depuis le côté contrôle d'un pseudo-terminal en spécifiant (par référence) un paramètre non nul. Il est désactivé en spécifiant (par référence) un paramètre zéro. Chaque lecture ultérieure du côté contrôle va renvoyer des données écrites sur la partie agent du pseudo-terminal, précédées soit d'un octet zéro, soit d'un octet unique qui reflète une opération de contrôle utilisateur du côté agent.

Une commande de contrôle utilisateur consiste en une opération ioctl spéciale sans données. Cette commande est émise en tant que UIOCCG (Valeur), où le paramètre Valeur indique un nombre compris entre 1 et 255. La valeur de l'opération est reçue sous la forme d'un octet unique lors de la lecture suivante depuis le côté contrôle.

La valeur 0 peut être utilisée avec l'opération ioctl UIOCCG pour vérifier l'existence de cette fonction. Le zéro n'est pas mis à disposition pour la lecture par le côté contrôle. Les opérations de commande peuvent être détectées avec une sélection pour des conditions exceptionnelles.

TIOCREMOTE Mode pour la moitié de contrôle d'un pseudo-terminal, indépendant de TIOCPKT. Ce mode met en oeuvre le contrôle de flux, plutôt que l'édition d'entrée, pour l'entrée du pseudo-terminal, quel que soit le mode terminal. Chaque écriture sur le terminal de contrôle produit une limite d'enregistrement pour le processus de lecture du terminal. Dans une utilisation normale, une écriture de données est comme les données saisies comme une ligne sur le terminal, tandis qu'une écriture de zéro octet est comme la saisie d'un caractère de fin de fichier. Ce mode est utilisé pour l'édition de ligne à distance dans un gestionnaire de fenêtres et une entrée contrôlée par flux.