Fichier sgtty.h
Objectif
Fournit l'interface de terminal pour la discipline de ligne Berkeley.
Descriptif
Le fichier sgtty.h définit les structures utilisées par les sous-routines ioctl qui s'appliquent aux fichiers de terminal. Les structures, définitions et valeurs de ce fichier sont fournies à des fins de compatibilité avec l'interface utilisateur de Berkeley pour la communication asynchrone. Les opérations de taille de fenêtre et de terminal utilisent la structure winsize , qui est définie dans le fichier ioctl.h . La structure taille de fichier et les fonctions ioctl qui l'utilisent sont décrites dans Présentation du sous-système dans Concepts généraux de programmation: écriture et débogage de programmes.
Modes sgtty.h de base
Les fonctions ioctl de base utilisent la structure sgttyb définie dans le fichier sgtty.h . Cette structure contient les zones suivantes:
- sg_ispeed
- Indique la vitesse d'entrée de l'unité. Pour tout matériel particulier, les changements de vitesse impossibles sont ignorés. Les valeurs symboliques de la table sont celles définies dans le fichier sgtty.h .
- B0
- Il raccroche. Le débit en bauds zéro est utilisé pour raccrocher la connexion. Si B0 est spécifié, le signal "terminal de données prêt" est supprimé. En conséquence, la ligne est généralement déconnectée.
- B50
- 50 bauds.
- B75
- 75 bauds.
- B110
- 110 bauds.
- B134
- 134.5 bauds.
- B150
- 150 bauds.
- B200
- 200 bauds.
- B300
- 300 bauds.
- B600
- 600 bauds.
- B1200
- 1200 bauds.
- B1800
- 1800 bauds.
- B2400
- 2400 bauds.
- B4800
- 4800 bauds.
- B9600
- 9600 bauds.
- EXTA
- Externe A.
- EXTB
- Externe B.
- sg_ospeed
- Indique la vitesse de sortie de l'unité. Reportez-vous à la description de lasg_ispeed:NONE. :NONE.sg_ospeedLa zone a les mêmes valeurs que la zonesg_ispeed:NONE.
- sg_erase
- Indique le caractère d'effacement. (La valeur par défaut est Retour arrière.)
- sg_kill
- Indique le caractère d'arrêt. (La valeur par défaut est Ctrl-U.)
- sg_flags
- Indique comment le système traite la sortie. La valeur initiale du contrôle de sortie est définie sur tous les bits. Les modes de sortie possibles sont les suivants:
- TOUTRETARD
- Retarde la sélection de l'algorithme.
- BSDELAY
- Sélectionne les délais de retour arrière. Les délais de retour arrière sont actuellement ignorés. Les valeurs possibles sont BS0 ou BS1.
- VTDELAY
- Sélectionne les délais de saut de page et de tabulation verticale:
- FF0
- Indique qu'il n'y a aucun délai.
- FF1
- Indique un délai d'environ 2 secondes.
- CRDELAY
- Sélectionne les délais de retour chariot:
- CR0
- Indique qu'il n'y a aucun délai.
- CR1
- Indique un délai. Le délai dure environ 0.08 secondes.
- CR2
- Indique un délai. Le délai dure environ 0.16 secondes.
- CR3
- Indique un délai. Les lignes à retard doivent être d'au moins 9 caractères à 9600 bauds.
- A TBDELAY
- Sélectionne les retards d'onglet:
- TAB0
- Indique qu'il n'y a aucun délai.
- TAB1
- Indique un délai. Le délai dépend de la quantité de mouvement.
- TAB2
- Indique un délai. Le délai dure environ 0.10 secondes.
- XTABS
- Indique que les tabulations doivent être remplacées par le nombre approprié d'espaces dans la sortie.
- NLDELAY
- Sélectionne les délais de retour à la ligne. Il s'agit d'un masque à utiliser avant d'effectuer une comparaison avec NL0 et NL1.
- NL0
- Indique qu'il n'y a aucun délai.
- NL1
- Indique un délai. Le délai dépend de la colonne en cours.
- NL2
- Indique un délai. Le délai dure environ 0.10 secondes.
Les bits de retard spécifient combien de temps la transmission s'arrête pour permettre un mouvement mécanique ou autre lorsque certains caractères sont envoyés au terminal. Les retards réels dépendent de la vitesse de la ligne et de la charge du système.
- EVPEV
- Permet une parité uniforme en entrée.
Les indicateurs EVPEV et DDP contrôlent à la fois le contrôle de parité sur les entrées et la génération de parité sur les sorties en mode CUIT et CBREAK (sauf si le bit LPASS8 est activé). La parité paire est générée en sortie, sauf si l'indicateur DDP est défini et que l'indicateur EVPEV est effacé, auquel cas la parité impaire est générée. Les caractères d'entrée dont la parité est incorrecte, tels que déterminés par les indicateurs EVPEV et DDP , sont ignorés en mode CUIT et CBREAK.
- DDP
- Permet une parité impaire en entrée. Reportez-vous à la description de l'indicateur EVPEV .
- brutes
- Indique le mode RAW, qui comporte un réveil sur tous les caractères et une interface 8 bits.
Le mode RAW désactive tous les traitements à l'exception du vidage de sortie spécifié par le bit LFLUSHO . Les 8 bits d'entrée complets sont donnés dès qu'ils sont disponibles ; tous les 8 bits sont passés en sortie. Une condition d'interruption dans l'entrée est signalée sous la forme d'un caractère NULL. Si la file d'entrée déborde en mode RAW, toutes les données des files d'attente d'entrée et de sortie sont supprimées ; cela s'applique aux nouveaux et aux anciens pilotes.
- CRMOD
- Mappe un retour chariot sur une nouvelle ligne en entrée et génère une nouvelle ligne en tant que retour chariot et une nouvelle ligne.
- Echo
- Echo (duplex intégral).
- LCASE
- Mappe les majuscules en minuscules sur les entrées et les minuscules en majuscules sur les sorties sur les terminaux en majuscules.
- CBREAK
- Active un mode demi-cuit. Les programmes peuvent lire chaque caractère tel qu'il est saisi au lieu d'attendre une ligne complète. Tout le traitement est effectué à l'exception de l'édition d'entrée. L'effacement de caractère et de mot, l'arrêt de ligne, la réimpression d'entrée et le traitement spécial de la barre oblique inversée et du caractère EOT sont désactivés.
- TANDEM
- Active le contrôle automatique du débit (mode TANDEM), qui permet au système de produire un caractère d'arrêt (Ctrl-S) lorsque la file d'entrée risque de déborder, et un caractère de début (Ctrl-Q) lorsque la file d'entrée est suffisamment vidée. Ce mode est utile pour le contrôle de flux lorsque le terminal est en fait un autre ordinateur qui comprend les conventions.Remarque: Les mêmes caractères d'arrêt et de démarrage sont utilisés pour les deux sens du contrôle de flux. Le caractère spécifié par let_stopcest accepté en entrée en tant que caractère qui arrête la sortie et est produit en sortie en tant que caractère pour arrêter l'entrée. Le caractère spécifié par let_startcest accepté en entrée en tant que caractère qui redémarre la sortie et est produit en sortie en tant que caractère pour redémarrer l'entrée.
Opérations ioctl de base
Un grand nombre de commandes ioctl s'appliquent aux terminaux. Certains ont la forme générale:
#include <sgtty.h>
ioctl(FileDescriptor, Code, Value)
struct sgttyb *Value; Les valeurs applicables pour le paramètre Code sont les suivantes:
| Article | Descriptif |
|---|---|
| TIOCGETP | Extrait les paramètres de base associés au terminal et les stocke dans la structure sgttyb pointée. |
| TIOCSETP | Définit les paramètres en fonction de la structure sgttyb pointée. L'interface retarde l'arrêt de la sortie, puis rejette les caractères non lus avant de changer les modes. |
| TIOCSETN | A le même effet que la valeur TIOCSETP mais ne retarde pas ou ne vide pas l'entrée. L'entrée n'est pas conservée, cependant, lors du passage du mode RAW au mode RAW. |
Pour les codes suivants, le paramètre Valeur est ignoré:
| Article | Descriptif |
|---|---|
| TIOCEXCL | Définit le mode d'utilisation exclusive ; aucune autre ouverture n'est autorisée tant que le fichier n'est pas fermé. |
| TIOCNXCL | Désactive le mode d'utilisation exclusive. |
| TIOCHPCL | Lorsque le fichier est fermé pour la dernière fois, raccroche le terminal. Ceci est utile lorsque la ligne est associée à un modem utilisé pour passer des appels sortants. |
Pour le code suivant, le paramètre Valeur est un pointeur vers un entier.
| Article | Descriptif |
|---|---|
| TIOCFLUSH | Si l'entier désigné par le paramètre Valeur a une valeur nulle, tous les caractères en attente dans les files d'attente d'entrée ou de sortie sont vidés. Sinon, la valeur de l'entier s'applique aux bits FREAD et FWRITE définis dans le fichier fcntl.h . Si le bit FREAD est défini, tous les caractères en attente dans les files d'attente d'entrée sont vidés. Si le bit FWRITE est défini, tous les caractères en attente dans les files d'attente en sortie sont vidés. Remarque: Les bits FREAD et FWRITE ne peuvent pas être utilisés sauf si l'indicateur _NOYAU est défini.
|
Dans les codes suivants, l'argument est 0 sauf indication contraire:
| Article | Descriptif |
|---|---|
| TIOCSTI | Le paramètre Valeur pointe vers un caractère que le système prétend avoir été entré sur le terminal. |
| TIOCSBRK | Le bit de rupture est défini dans le terminal. |
| TIOCCBRK | Le bit de rupture est effacé. |
| TIOCSDTR | Le terminal de données prêt est défini. |
| TIOCCDTR | Le terminal de données prêt est effacé. |
| ARRET DE TIOC | La sortie est arrêtée comme si le caractère d'arrêt avait été saisi. |
| DEMARRAGE DE TIOC | La sortie est redémarrée comme si le caractère de début avait été saisi. |
| TIOCGPGRP | Le paramètre Valeur est un pointeur vers un entier dans lequel est placé l'ID de groupe de processus du groupe de processus pour lequel ce terminal est le terminal de contrôle. |
| TIOCSPGRP | Le paramètre Valeur est un pointeur vers un entier qui est la valeur à laquelle l'ID de groupe de processus de ce terminal sera défini. |
| TIOCOUTQ | Renvoie dans l'entier désigné par le paramètre Valeur le nombre de caractères mis en file d'attente pour la sortie vers le terminal. |
| LECTURE DE LA VALEUR | Renvoie dans l'entier désigné par le paramètre Valeur le nombre de caractères immédiatement lisibles à partir du descripteur d'argument. Cela fonctionne pour les fichiers, les canaux de communication et les terminaux. |
Terminaux en majuscules
Si le bit de mode de sortie LCASE est défini, toutes les lettres majuscules sont mappées dans la lettre minuscule correspondante. La lettre majuscule peut être générée en la faisant précéder d'une barre oblique inversée (\). Les majuscules sont précédées d'une barre oblique inversée lorsqu'elles sont générées. En outre, les séquences d'échappement suivantes peuvent être générées en sortie et acceptées en entrée:
| Pour | Utilisation |
|---|---|
| ` (tombe) | \' |
| | | \! |
| ~ | \^ |
| { | \( |
| } | \) |
Pour traiter les terminaux qui ne comprennent pas que le caractère ~ (tilde) a été transformé en caractère ASCII, le bit LTILDE peut être défini dans le mot en mode local. Lorsque le bit LTILDE est défini, le caractère ~ (tilde) est remplacé par le caractère ` (grave) en sortie.
Caractères spéciaux
Une structure tchars associée à chaque terminal spécifie des caractères spéciaux pour les anciennes et les nouvelles interfaces de terminal. Cette structure est définie dans le fichier ioctl.h , pour lequel le fichier sgtty.h contient une instruction #include . La structure tchars contient les zones suivantes:
| Article | Descriptif |
|---|---|
| t_intrc | Le caractère d'interruption (Ctrl-C, par défaut) génère un signal SIGINT . Il s'agit de la méthode normale pour arrêter un processus qui n'est plus nécessaire ou pour reprendre le contrôle dans un programme interactif. |
| t_quitc | Le caractère de fin (Ctrl-\, par défaut) génère un signal SIGQUIT . Permet de mettre fin à un programme et de produire une image principale, si possible, dans un fichier coeur du répertoire en cours. |
| t_startc | Caractère de début de sortie (Ctrl-Q, par défaut). |
| t_stopc | Caractère d'arrêt de la sortie (Ctrl-S, par défaut). |
| t_eofc | Caractère de fin de fichier (Ctrl-D, par défaut). |
| t_brkc | Le délimiteur d'entrée ((-1, par défaut). Ce caractère agit comme une nouvelle ligne en ce sens qu'il se termine par une ligne, qu'il est répercuté et qu'il est transmis au programme. |
Les caractères d'arrêt et de démarrage peuvent être identiques pour produire un effet de basculement. Les fonctions ioctl applicables sont les suivantes:
| Article | Descriptif |
|---|---|
| TIOCGETC | Extrait les caractères spéciaux et les place dans la structure spécifiée. |
| TIOCSETC | Définit les caractères spéciaux sur ceux donnés dans la structure. |
Mode local
A chaque terminal est associé un mot en mode local. Les bits du mot en mode local sont:
| Article | Descriptif |
|---|---|
| LCRTBS | Les espaces arrière sur l'effacement plutôt que de faire écho à l'effacement. |
| LPRTERA | Impression du mode d'effacement du terminal. |
| LCRTERA | Efface les échos de caractère en tant que Backspace-Space-Backspace. |
| LTILDE | Convertit ~ (tilde) en ` (grave) en sortie (pour les terminaux qui ne reconnaissent pas le tilde comme un caractère ASCII). |
| LMDMBUF | Arrête et démarre la sortie lorsque le transporteur tombe. |
| LLITOUT | Supprime les traductions de sortie. |
| LTOSTOP | Envoie un signal SIGTTOU pour la sortie d'arrière-plan. |
| LFLUSHO | La sortie est vidée. |
| LNOHANG | Ne pas envoyer raccrocher lorsque le transporteur tombe. |
| LCRTKIL | Retour arrière-Espace-Retour arrière pour effacer la totalité de la ligne lors de l'arrêt de la ligne. |
| LPASS8 | Passe les 8 bits en entrée, dans n'importe quel mode. |
| LCTLECH | Renvoie les caractères de contrôle d'entrée en tant que Ctrl-Xet les supprime en tant que Ctrl-?. |
| LPENDIN | Retape l'entrée en attente lors de la prochaine lecture ou du prochain caractère d'entrée. |
| LDECCTQ | Seul Ctrl-Q redémarre la sortie après un Ctrl-S. |
| LNOFLSH | Empêche le vidage des E-S en attente lorsqu'un caractère d'interruption est saisi. |
Les fonctions ioctl suivantes fonctionnent sur la structure de mots en mode local:
| Article | Descriptif |
|---|---|
| TIOCLBIS | Le paramètre Valeur est un pointeur vers un entier dont la valeur est un masque contenant les bits à définir dans le mot en mode local. |
| TIOCLBIC | Le paramètre Valeur est un pointeur vers un entier dont la valeur est un masque contenant les bits à effacer dans le mot en mode local. |
| TIOCLSET | Le paramètre Valeur est un pointeur vers un entier dont la valeur est stockée dans le mot en mode local. |
| TIOCLGET | Le paramètre Valeur est un pointeur vers un entier dans lequel est placé le mot en mode local en cours. |
Caractères spéciaux locaux
La structure Caractères ltchars associée à chaque terminal définit des caractères de contrôle pour le nouveau pilote de terminal. Cette structure contient les zones suivantes:
| Article | Descriptif |
|---|---|
| t_suspc | Caractère de processus d'interruption (Ctrl-Z, par défaut). Un signal SIGTSTP est envoyé pour interrompre le groupe de processus en cours. Ce caractère est reconnu lors de l'entrée. |
| t_dsuspc | Caractère de processus d'interruption différé (Ctrl-Y, par défaut). Un signal SIGTSTP est envoyé pour interrompre le groupe de processus en cours. Ce caractère est reconnu lorsque le processus tente de lire le caractère de contrôle plutôt que lorsque le caractère est saisi. |
| t_rprntc | Caractère de contrôle de la ligne de réimpression (Ctrl-R, par défaut). Cette commande réimprime tous les caractères qui sont précédés d'un caractère de nouvelle ligne et qui n'ont pas été lus. |
| t_flushc | Caractère de sortie de vidage (Ctrl-O, par défaut). Cette opération vide les données qui sont écrites mais qui ne sont pas transmises. |
| t_werasc | Caractère d'effacement de mot (Ctrl-W, par défaut). Ceci efface le mot précédent. Cela n'efface pas au-delà du début de la ligne. |
| t_lnextc | Le caractère littéral suivant (Ctrl-V, par défaut). Ainsi, la signification spéciale du caractère suivant est ignorée afin que les caractères puissent être entrés sans être interprétés par le système. |
Les fonctions ioctl suivantes, qui utilisent la structure Caractères ltchars , sont prises en charge par l'interface de terminal pour la définition des caractères spéciaux locaux d'un terminal:
| Article | Descriptif |
|---|---|
| TIOCSLTC | Définit les caractères locaux. L'argument de cette fonction est un pointeur vers une structure Caractères ltchars , qui définit les nouveaux caractères spéciaux locaux. |
| TIOCGLTC | Définit les caractères locaux. L'argument de cette fonction est un pointeur vers une structure Caractères ltchars dans laquelle est placé l'ensemble en cours de caractères spéciaux locaux. |
La structure taille de fichier et les fonctions ioctl qui l'utilisent sont décrites dans la discussion du code commun tty dans "Présentation du sous-système tty" dans Concepts généraux de programmation: écriture et débogage de programmes.
Fichier
| Article | Descriptif |
|---|---|
| /dev/tty | Le fichier spécial Tty , qui est un synonyme du terminal de contrôle. |