Fichier spécial pty
Objectif
Fournit le pilote de périphérique pseudo-terminal (pty).
Descriptif
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:
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. |