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.

Remarque: version 4 prend en charge la discipline de ligne Berkeley pour la compatibilité avec les applications plus anciennes. Toutefois, il est fortement recommandé d'utiliser la discipline de ligne compatible POSIX , qui est décrite dans le fichier termios.h .

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.