Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ termio(7) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fork(2)

ioctl(2)

setsid(2)

signal(2)

termios(3C)

streamio(7)

termio(7)                                                         termio(7)

NAME
     termio - Allgemeine Terminal-Schnittstelle

SYNTAX
     #include <termio.h>

     ioctl(int fildes, int request, struct termio *arg);
     ioctl(int fildes, int request, int arg);

     #include <termios.h>

     ioctl(int fildes, int request, struct termios *arg);

BESCHREIBUNG
     Reliant UNIX unterstützt eine allgemeine, hardwareunabhängige Schnitt-
     stelle für asynchrone Anschlüsse. Der Benutzer kann auf diese Einrich-
     tung über Funktionsaufrufe zugreifen, die unter termios(3C) und in
     diesem Abschnitt unter der Überschrift IOCTL-FUNKTIONSAUFRUFE
     beschrieben werden. Außerdem werden in diesem Abschnitt die allgemei-
     nen Terminal-Subsysteme beschrieben, die für beide Benutzerschnitt-
     stellen von Bedeutung sind.

     Eine Terminal-Datei weist den Prozeß nach dem Öffnen normalerweise an,
     auf den Aufbau einer Verbindung zu warten. In Wirklichkeit werden
     Terminal-Dateien nur selten durch Benutzerprogramme geöffnet; statt
     dessen werden sie durch das System geöffnet und dann als Standardein-
     gabe-, Ausgabe- und Fehlerdateien des Benutzers verwendet. Die alle-
     rerste Terminal-Datei, die vom Session-Leader geöffnet wird und nicht
     bereits einer Sitzung zugeordnet ist, wird zum Steuerungsterminal für
     diese Sitzung. Das Steuerungsterminal übernimmt bei der Behandlung der
     Abbruch- und Unterbrechungssignale eine spezielle Funktion (siehe
     unten). Das Steuerungsterminal wird bei einem fork(2)-Systemaufruf von
     einem Sohnprozeß übernommen. Ein Prozeß kann diese Zuordnung auflösen,
     indem er seine Sitzung mit setsid(2) wechselt.

     Ein Terminal, das einer dieser Dateien zugeordnet ist, läuft normaler-
     weise im Vollduplex-Betrieb. Es können jederzeit, sogar während gerade
     eine Ausgabe läuft, Zeichen eingegeben werden. Die Zeichen gehen nur
     verloren, wenn die Eingabepuffer des Systems vollständig gefüllt sind.
     Dies kommt aber nur selten vor, z. B. wenn die Anzahl der Zeichen im
     Leitungsprozeduren-Puffer die Werte {MAXCANON} und IMAXBEL [siehe
     unten] übersteigt oder der Benutzer {MAXINPUT} Eingabezeichen zusam-
     menkommen ließ, die noch nicht von einem Programm eingelesen worden
     sind. Wenn der Eingabepuffer voll ist, werden sämtliche Zeichen, die
     bis zu diesem Zeitpunkt im Puffer zwischengespeichert worden sind,
     stillschweigend gelöscht.









Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

   Sitzungsverwaltung (Auftragssteuerung)
     Ein Steuerungsterminal erkennt eine der Prozeßgruppen in der Sitzung,
     die ihm zugeordnet ist, als Vordergrund-Prozeßgruppe. Alle anderen
     Prozesse in der Sitzung erhalten den Status einer Hintergrund-Prozeß-
     gruppe. Die Vordergrund-Prozeßgruppe übernimmt bei der Behandlung von
     signalgenerierenden Eingabezeichen eine spezielle Funktion (siehe
     unten). Einem Steuerungsterminal wird beim Einrichten standardmäßig
     die Prozeßgruppe des Steuerungsprozesses als Vordergrund-Prozeßgruppe
     zugeordnet.

     Für Hintergrund-Prozeßgruppen in der Sitzung des Steuerungsprozesses
     wird beim Versuch, auf ihr Steuerungsterminal zuzugreifen, eine
     Auftragssteuerungs-Leitungsprozedur aktiviert. An Prozeßgruppen können
     Signale übermittelt werden, die zu ihrer Beendigung führen, wenn keine
     andere Vorgehensweisen festgelegt worden sind. Eine Ausnahme stellen
     Mitglieder von verwaisten Prozeßgruppen dar. Dabei handelt es sich um
     Prozeßgruppen, die kein Mitglied mit einem Vaterprozeß in einer ande-
     ren Prozeßgruppe mit derselben Sitzungsnummer und somit demselben
     Steuerungsterminal haben. Wenn die verwaiste Prozeßgruppe eines Mit-
     glieds versucht, auf ihr Steuerungsterminal zuzugreifen, werden Fehler
     zurückgegeben - schließlich gibt es keinen Prozeß, der weiterhin aktiv
     sein könnte, falls die Prozeßgruppe beendet würde.

     Wenn ein Mitglied einer Hintergrund-Prozeßgruppe versucht, Daten von
     seinem Steuerungsterminal einzulesen, wird an seine Prozeßgruppe ein
     SIGTTIN-Signal übermittelt, das im Normalfall zur Beendigung der Mit-
     glieder dieser Prozeßgruppe führt. Wenn der Prozeß das SIGTTIN-Signal
     dagegen ignoriert oder blockiert oder er ein Mitglied einer verwaisten
     Prozeßgruppe ist, wird die Leseoperation mit einem Fehler abgebrochen,
     wobei errno auf EIO gesetzt wird; es wird dann kein Signal übermit-
     telt.

     Wenn ein Mitglied einer Hintergrund-Prozeßgruppe versucht, auf sein
     Steuerungsterminal zu schreiben, und das TOSTOP-Bit im Feld clflag
     gesetzt ist, erhält seine Prozeßgruppe ein SIGTTOU-Signal, das norma-
     lerweise zur Beendigung der Mitglieder dieser Prozeßgruppe führt. Wenn
     der Prozeß das SIGTTOU-Signal dagegen ignoriert oder blockiert, kann
     der Schreibzugriff erfolgreich durchgeführt werden. Wenn der Prozeß
     das SIGTTOU-Signal weder ignoriert noch blockiert und ein Mitglied
     einer verwaisten Prozeßgruppe ist, wird die Schreiboperation mit einem
     Fehler abgebrochen, wobei errno auf EIO gesetzt ist; es wird dann kein
     Signal übermittelt.

     Wenn TOSTOP gesetzt ist und ein Mitglied einer Hintergrund-Prozeß-
     gruppe einen ioctl-Funktionsaufruf für sein Steuerungsterminal ver-
     sucht und dieser ioctl-Funktionsaufruf Terminal-Parameter ändert
     (dabei kann es sich z. B. um TCSETA, TCSETAW, TCSETAF oder TIOCSPGRP
     handeln), wird an seine Prozeßgruppe ein SIGTTOU-Signal übermittelt,
     das normalerweise zur Beendigung der Mitglieder dieser Prozeßgruppe
     führt. Wenn der Prozeß das SIGTTOU-Signal dagegen ignoriert oder blok-
     kiert, kann der ioctl-Funktionsaufruf erfolgreich durchgeführt werden.
     Wenn der Prozeß das SIGTTOU-Signal weder ignoriert noch blockiert und


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     er ein Mitglied einer verwaisten Prozeßgruppe ist, wird die Schreib-
     operation mit einem Fehler abgebrochen, wobei errno auf EIO gesetzt
     ist; es wird dann kein Signal übermittelt.

   Standardmäßige ("kanonische") Verarbeitung der Eingabe
     Die Terminal-Eingabe wird normalerweise zeilenweise verarbeitet. Eine
     Zeile wird durch ein Zeilenendezeichen (ASCII LF bzw. EOL) oder ein
     Dateiende-Zeichen (ASCII EOT) abgeschlossen. Somit wird das Programm,
     das einen Lesezugriff versucht, so lange angehalten, bis eine ganze
     Zeile eingegeben worden ist. Außerdem wird maximal eine Zeile zurück-
     gegeben, unabhängig davon, wie viele Zeichen im Leseaufruf angefordert
     worden sind. Allerdings ist es nicht notwendig, eine vollständige
     Zeile auf einmal einzulesen; bei einem Lesezugriff kann eine beliebige
     Anzahl von Zeichen (auch nur ein einziges Zeichen) ohne Informations-
     verlust angefordert werden.

     Das ERASE- und das KILL-Zeichen wird während der Eingabe wie üblich
     verarbeitet. Das ERASE-Zeichen (Standard: das Nummern-Zeichen #)
     bewirkt das Löschen des zuletzt eingegebenen Zeichens. Das WERASE-
     Zeichen (das Zeichen CTRL-W) löscht das letzte "Wort", das in der
     aktuellen Eingabezeile eingegeben wurde (allerdings ohne vorange-
     stellte Leer- oder Tabulatorzeichen). Ein "Wort" ist als eine Folge
     von Zeichen definiert, wobei es sich nicht um Leerzeichen handeln
     darf; Tabulatorzeichen werden als Leerzeichen gezählt. Weder mit dem
     ERASE- noch mit dem WERASE-Zeichen kann über den Zeilenanfang hinweg
     gelöscht werden. Das KILL-Zeichen (Standard: das Zeichen @) löscht die
     gesamte Eingabezeile und gibt gegebenenfalls ein Zeilenendezeichen
     aus. Alle genannten Zeichen werden über einen Tastenanschlag gene-
     riert; Rückschritt- oder Tabulatorzeichen, die zuvor eingegeben worden
     sind, haben dabei keinerlei Auswirkungen. Das REPRINT-Zeichen (CTRL-R)
     gibt ein Zeilenendezeichen aus, gefolgt von allen Zeichen, die noch
     nicht eingelesen worden sind. Die erneute Ausgabe wird auch dann auto-
     matisch durchgeführt, wenn Zeichen, die normalerweise vom Bildschirm
     gelöscht würden, mit einer Programmausgabe kollidieren. Die Zeichen
     werden erneut ausgegeben, als wäre die Echo-Funktion aktiv; wenn ECHO
     somit nicht gesetzt ist, werden sie nicht ausgegeben.

     Die Zeichen ERASE und KILL können direkt eingegeben werden, indem
     ihnen das Escape-Zeichen (\) vorangestellt wird. In diesem Fall wird
     das Escape-Zeichen nicht eingelesen. Das ERASE- und KILL-Zeichen kann
     geändert werden.

   Verzögerungsfreie Verarbeitung der Eingabe
     Bei der verzögerungsfreien ("nichtkanonischen") Verarbeitung der Ein-
     gabe werden die Eingabezeichen nicht zu Zeilen zusammengefaßt und die
     ERASE- und KILL-Zeichen nicht verarbeitet. Die Verarbeitung der Emp-
     fangsdaten wird über die Werte von MIN und TIME gesteuert.







Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     MIN steht für die Anzahl der Zeichen, nach deren Empfang eine Lesean-
     forderung frühestens erfüllt wird (d. h., die Zeichen zum Benutzer
     zurückgegeben werden). TIME ist ein im 0,10-Sekunden-Takt arbeitender
     Zeitgeber, mit dem eine Zeitüberschreitung bei diskontinuierlichen und
     kurzfristigen Datenübertragungen angezeigt wird. Die vier möglichen
     Werte für MIN und TIME und ihre gegenseitigen Abhängigkeiten werden
     nachfolgend beschrieben.

     Fall A: MIN > 0, TIME > 0
          In diesem Fall fungiert TIME als "Intercharacter-Timer", der nach
          dem Empfang des ersten Zeichens aktiviert wird. Wegen seiner
          Funktion als Intercharacter-Timer wird er nach dem Empfang eines
          Zeichens zurückgesetzt. Das Zusammenspiel zwischen MIN und TIME
          sieht folgendermaßen aus: Sobald ein Zeichen empfangen wird, wird
          der Intercharacter-Timer gestartet. Wenn MIN Zeichen vor dem
          Ablaufen des Intercharacter-Timer empfangen werden (beachten Sie,
          daß der Intercharacter-Timer nach dem Empfang jedes Zeichens
          zurückgesetzt wird), wird die Leseanforderung erfüllt. Wenn der
          Intercharacter-Timer vor dem Empfang von MIN Zeichen abläuft,
          werden die bis zu diesem Zeitpunkt empfangenen Zeichen an den
          Benutzer zurückgegeben. Beachten Sie, daß beim Ablaufen von TIME
          mindestens ein Zeichen zurückgegeben wird (der Intercharacter-
          Timer wäre ohne den Empfang eines Zeichens überhaupt nicht akti-
          viert worden). In diesem Fall (MIN > 0, TIME > 0) wird die Lese-
          anforderung so lange angehalten, bis die MIN- und TIME-Mechanis-
          men durch den Empfang des ersten Zeichens aktiviert werden. Wenn
          die Anzahl der eingelesenen Zeichen unter der Anzahl der verfüg-
          baren Zeichen liegt, wird der Intercharacter-Timer nicht reakti-
          viert, und die nachfolgende Leseanforderung wird sofort erfüllt.

     Fall B: MIN > 0, TIME = 0
          Da der Wert von TIME in diesem Fall null ist, spielt der Inter-
          character-Timer keine Rolle; nur MIN ist signifikant. Eine anste-
          hende Leseanforderung wird erst nach dem Empfang von MIN Zeichen
          befriedigt (die anstehende Leseanforderung wird angehalten, bis
          MIN Zeichen empfangen worden sind). Ein Programm, das diese Kon-
          stellation zum Lesen von satzorientierten Terminal-Ein-/Ausgaben
          nutzt, kann durch die Leseoperation unendlich lange blockiert
          werden.

     Fall C: MIN = 0, TIME > 0
          Da MIN = 0, ist TIME nicht mehr ein Intercharacter-Timer; statt
          dessen fungiert es jetzt als Zeitgeber für Leseoperationen, der
          unmittelbar nach einem read-Systemaufruf aktiviert wird. Eine
          Leseanforderung wird erfüllt, sobald ein Einzelzeichen empfangen
          wurde oder der Zeitgeber für Leseanforderungen abläuft. In diesem
          Fall ist zu beachten, daß nach dem Ablaufen des Zeitgebers kein
          Zeichen zurückgegeben wird. Wenn der Zeitgeber nicht abläuft,
          kann die Leseanforderung nur befriedigt werden, wenn ein Zeichen
          empfangen wird. In diesem Fall wird die Leseanforderung beim War-
          ten auf ein Zeichen nicht unendlich blockiert; wenn innerhalb von
          TIME*0,10 Sekunden nach der Leseanforderung keine Zeichen


Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

          empfangen werden, wird die Leseanforderung mit null zurückgegebe-
          nen Zeichen abgebrochen.

     Fall D: MIN = 0, TIME = 0
          In diesem Fall findet sofort eine Rückkehr statt. Es wird die
          Mindestzahl der angeforderten Zeichen oder der aktuell verfügba-
          ren Zeichen zurückgegeben, ohne daß auf die Eingabe weiterer Zei-
          chen gewartet würde.

Vergleich der verschiedenen Möglichkeiten eines Zusammenspiels von MIN und TIME
     In bezug auf MIN und TIME ist noch auf einige Punkte hinzuweisen:

     1. Die im folgenden dargestellten Abhängigkeiten zwischen MIN und TIME
        sind nicht umkehrbar. So hat TIME keinerlei Auswirkungen, wenn MIN
        > 0 und TIME = 0 ist. Im umgekehrten Fall dagegen, d. h. MIN = 0
        und TIME > 0, sind sowohl MIN als auch TIME signifikant, da MIN
        beim Empfang eines Einzelzeichens erfüllt ist.

     2. TIME stellt im Fall A (MIN > 0, TIME > 0) einen Intercharacter-
        Timer dar, im Fall C (TIME = 0, TIME > 0) dagegen einen Zeitgeber
        für Leseanforderungen.

     Diese beiden Punkte zeigen den doppelten Zweck des MIN/TIME-Mechanis-
     mus auf. In Fall A und B mit MIN > 0 dient der Mechanismus zur Verar-
     beitung von im Blockbetrieb durchgeführten Übertragungen (z. B.
     Dateiübertragungen), bei denen ein Programm mindestens MIN Zeichen
     gleichzeitig verarbeiten möchte. In Fall A stellt die Aktivierung des
     Intercharacter-Timers durch den Benutzer eine Sicherheitsvorkehrung
     dar; in Fall B wird der Intercharacter-Timer deaktiviert.

     In den Fällen C und D dient der Mechanismus zur Verarbeitung von zei-
     chenweisen, über Zeitgeber gesteuerten Übertragungen. Diese Fälle kön-
     nen einfach für bildschirmorientierte Anwendungen genutzt werden, die
     vor dem Neuaufbau der Bildschirmanzeige wissen müssen, ob ein Zeichen
     in der Eingabewarteschlange vorhanden ist. In Fall C wird die Leseope-
     ration im Gegensatz zu Fall D über einen Zeitgeber gesteuert.

     Zu beachten ist außerdem, daß MIN in jedem Fall lediglich einen Min-
     destwert darstellt. Es steht nicht für die Länge eines Datensatzes.
     Wenn ein Programm beispielsweise 20 Byte einliest, wobei MIN den Wert
     10 hat und 25 Zeichen vorhanden sind, so werden 20 Zeichen an den
     Benutzer zurückgegeben.












Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

   Schreiben von Zeichen
     Wenn ein oder mehrere Zeichen geschrieben werden, werden sie an das
     Terminal übermittelt, sobald die Eingabe der zuvor geschriebenen Zei-
     chen beendet ist. Die Eingabezeichen werden bei aktivem Echo sofort
     auf dem Bildschirm wiedergegeben. Wenn die Zeichen durch einen Prozeß
     schneller generiert werden, als sie eingegeben werden können, wird der
     Prozeß angehalten, sobald die Anzahl der Zeichen in seiner Ausgabewar-
     teschlange einen bestimmten Höchstwert übersteigt. Sobald die Anzahl
     der Zeichen in der Warteschlange wieder unter eine bestimmte Schwelle
     sinkt, wird die Programmausführung fortgesetzt.

   Sonderzeichen
     Einige Sonderzeichen haben spezielle Funktionen bei der Eingabe. Die
     nachfolgende Auflistung enthält diese Funktionen sowie die Zeichen,
     durch die sie standardmäßig generiert werden.

     INTR     (Rubout bzw. ASCII DEL) Generiert ein SIGINT-Signal. SIGINT
              wird an alle häufig wiederkehrenden Prozesse übermittelt, die
              dem Steuerungsterminal zugeordnet sind. Im Normalfall wird
              die Beendigung sämtlicher derartiger Prozesse erzwungen; es
              können allerdings Vorkehrungen getroffen werden, daß das Sig-
              nal entweder ignoriert oder an einer bestimmten Stelle abge-
              fangen wird [siehe signal(5)].

     QUIT     (CTRL-| bzw. ASCII FS) Generiert ein SIGQUIT-Signal. Dieses
              Signal wird exakt wie das Unterbrechungssignal behandelt, es
              sei denn, der empfangende Prozeß hat andere Vorkehrungen
              getroffen; in diesem Fall bewirkt es nicht nur die Beendigung
              des Prozesses, sondern auch das Anlegen einer Speicherabzugs-
              datei (Name: core) im aktuellen Verzeichnis.

     ERASE    (#) Löscht das unmittelbar vorhergehende Zeichen. Es kann
              nicht über den Zeilenanfang hinaus gelöscht werden (als Zei-
              lenabschluß gilt NL, EOF, EOL oder EOL2).

     WERASE   (CTRL-W bzw. ASCII ETX) Löscht das vorangehende "Wort". Es
              kann nicht über den Zeilenanfang hinaus gelöscht werden (als
              Zeilenabschluß gilt NL, EOF, EOL oder EOL2).

     KILL     (@) Löscht die gesamte Zeile (als Zeilenabschluß gilt NL,
              EOF, EOL oder EOL2).

     REPRINT  (CTRL-R bzw. ASCII DC2) Gibt alle noch nicht eingelesenen
              Zeichen erneut aus und stellt ihnen ein Zeilenendezeichen
              voran.

     EOF      (CTRL-D bzw. ASCII EOT) Generiert ein Dateiendezeichen von
              einem Terminal aus. Beim Empfang werden sämtliche zum Einle-
              sen anstehenden Zeichen direkt an das Programm übermittelt,
              ohne auf ein Zeilenendezeichen zu warten. Das EOF-Zeichen
              wird gelöscht. Wenn somit keine Zeichen anstehen (d. h. EOF-
              Zeichen am Zeilenanfang), werden Null-Zeichen


Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

              zurückgeschickt, also die Standard-Dateiendezeichen. Wenn ihm
              kein Escape-Zeichen vorangestellt ist, wird das EOF-Zeichen
              nicht auf dem Bildschirm ausgegeben. Da EOT das Standard-
              EOF-Zeichen ist, wird dadurch der Verbindungsabbruch durch
              Terminals verhindert, die auf EOT reagieren.

     NL       (ASCII LF) Der normale Zeilenbegrenzer. Er darf weder geän-
              dert noch mit einem Escape-Zeichen versehen werden.

     EOL      (ASCII NULL) Zusätzlicher Zeilenbegrenzer mit der gleichen
              Funktion wie NL. Er wird normalerweise nicht benutzt.

     EOL2     ist ein weiterer Zeilenbegrenzer.

     SWTCH    (CTRL-Z bzw. ASCII EM) Wird nur benutzt, wenn eine shl-
              Schicht aktiv ist.

     SUSP     (CTRL-Z bzw. ASCII SUB) Generiert ein SIGTSTP-Signal. SIGTSTP
              hält sämtliche Prozesse an, die in der Vordergrund-Prozeß-
              gruppe für dieses Terminal enthalten sind.

     DSUSP    (CTRL-Y bzw. ASCII EM) Generiert wie SUSP ein SIGTSTP-Signal;
              das Signal wird jedoch nur übermittelt, wenn ein Prozeß in
              der Vordergrund-Prozeßgruppe das Zeichen DSUSP einzulesen
              versucht, und nicht wenn es eingegeben wird.

     STOP     (CTRL-S bzw. ASCII DC3) Kann zum vorübergehenden Anhalten der
              Ausgabe benutzt werden. Damit kann auf CRT-Terminals verhin-
              dert werden, daß die Ausgabe zu schnell über den Bildschirm
              läuft. Wenn die Ausgabe angehalten worden ist, werden STOP-
              Zeichen ignoriert und nicht eingelesen.

     START    (CTRL-Q bzw. ASCII DC1) Wird zum Fortsetzen der Ausgabe
              benutzt. Die Ausgabe ist durch ein STOP-Zeichen angehalten
              worden. Wenn die Ausgabe angehalten worden ist, werden
              START-Zeichen ignoriert und nicht gelesen.

     DISCARD  (CTRL-O bzw. ASCII SI) Bewirkt, daß die nachfolgende Ausgabe
              verlorengeht. Die Ausgabe geht so lange verloren, bis ein
              weiteres DISCARD-Zeichen eingegeben wird, weitere Eingabezei-
              chen empfangen werden oder die Bedingung durch ein Programm
              zurückgesetzt wird.

     LNEXT    (CTRL-V bzw. ASCII SYN) Bewirkt, daß die Sonderbedeutung des
              nachfolgenden Zeichens aufgehoben wird. Dies funktioniert bei
              allen oben aufgeführten Sonderzeichen. Dadurch können Zeichen
              eingegeben werden, die andernfalls durch das System interpre-
              tiert würden (z. B. Zeichen wie KILL, QUIT usw.).






Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Die Werte der Zeichen INTR, QUIT, ERASE, WERASE, KILL, REPRINT, EOF,
     EOL, EOL2, SWTCH, SUSP, DSUSP, STOP, START, DISCARD und LNEXT können
     an individuelle Anforderungen angepaßt werden. Wenn der Wert eines
     Steuerzeichens POSIXVDISABLE (0) ist, wird die Funktion dieses Steu-
     erzeichens deaktiviert. Die Zeichen ERASE, KILL und EOF können durch
     einen vorangestellten Gegenschrägstrich (\) entwertet werden; in die-
     sem Fall wird keine Sonderfunktion durchgeführt. Jedem der Sonderzei-
     chen kann das LNEXT-Zeichen vorangestellt werden; in diesem Fall wird
     keine Sonderfunktion durchgeführt.

   Abgeschaltetes Modem
     Wenn festgestellt wird, daß ein Modem abgeschaltet ist, wird an den
     Steuerungsprozeß des Terminals ein SIGHUP-Signal übermittelt. Sofern
     keine anderen Vorkehrungen getroffen wurden, bewirken diese Signale
     die Beendigung des Prozesses. Wenn SIGHUP ignoriert oder abgefangen
     wird, wird jede nachfolgende Leseanforderung so lange mit einem Datei-
     endezeichen zurückgegeben, bis die Terminal-Sitzung beendet wird.

     Wenn der Steuerungsprozeß nicht zur Vordergrund-Prozeßgruppe des Ter-
     minals gehört, wird ein SIGTSTP-Signal an die Vordergrund-Prozeßgruppe
     übermittelt. Sofern keine anderen Vorkehrungen getroffen wurden,
     bewirken diese Signale das Anhalten der Prozesse.

     Wenn Prozesse in Hintergrund-Prozeßgruppen versuchen, nach dem
     Abschalten eines Modems auf das Steuerungsterminal zuzugreifen, wäh-
     rend das Terminal noch der Sitzung zugeordnet ist, werden diesen Pro-
     zessen die entsprechenden SIGTTOU- und SIGTTIN-Signale übermittelt.
     Sofern keine anderen Vorkehrungen getroffen wurden, bewirkt dieses
     Signal das Anhalten der Prozesse.

     Das Steuerungsterminal bleibt in diesem Zustand, bis es erneut durch
     den Steuerungsprozeß mit einem erfolgreichen open-Systemaufruf initia-
     lisiert oder die Zuordnung durch den Steuerungsprozeß aufgehoben wird.

   Terminal-Parameter
     Die Parameter zur Funktionssteuerung der Geräte und Module, die die
     termios-Schnittstelle bilden, werden durch die termios-Struktur in
     <termios.h> definiert. Diese Struktur wird durch verschiedene
     ioctl(2)-Systemaufrufe zum Abrufen oder Ändern dieser Parameter
     benutzt und enthält die folgenden Elemente:

          tcflagt ciflag;     /* Steuerung der Dateneingabe     */
          tcflagt coflag;     /* Steuerung der Datenausgabe     */
          tcflagt ccflag;     /* Steuerung der Datenübertragung */
          tcflagt clflag;     /* Lokale Modi                    */
          cct     ccc[NCCS];  /* Steuerzeichen                  */








Seite 8                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Die speziellen Steuerzeichen werden durch das Array ccc definiert.
     Der symbolische Name NCCS steht für die Größe des Steuerzeichen-Arrays
     und wird ebenfalls in <termios.h> definiert. Die relativen Positionen,
     Indexnamen und typischen Standardwerte für jede Funktion sind wie
     folgt festgelegt:

         0   VINTR        DEL
         1   VQUIT        FS
         2   VERSE        #
         3   VKILL        @
         4   VEOF         EOT
         5   VEOL         NUL
         6   VEOL2        NUL
         7   VSWTCH       NUL
         8   VSTRT        DC1
         9   VSTOP        DC3
        10   VSUSP        SUB
        11   VDSUSP       EM
        12   VREPRINT     DC2
        13   VDISCRD      SI
        14   VWERSE       ETB
        15   VLNEXT       SYN
     16-19   reserviert

   Steuerung der Dateneingabe
     Die ciflag beschreiben die grundlegende Eingabesteuerung für das Ter-
     minal:

     IGNBRK    Break-Bedingung ignorieren.
     BRKINT    Signalunterbrechung bei Break.
     IGNPAR    Zeichen mit Paritätsfehlern ignorieren.
     PARMRK    Paritätsfehler kennzeichnen.
     INPCK     Paritätsprüfung für die Eingabe aktivieren.
     ISTRIP    Zeichen entfernen.
     INLCR     NL in der Eingabe auf CR abbilden.
     IGNCR     CR ignorieren.
     ICRNL     CR in der Eingabe auf NL abbilden.
     IUCLC     Großbuchstaben in der Eingabe auf Kleinbuchstaben abbilden.
     IXON      Start/Stop-Ausgabesteuerung aktivieren.
     IXANY     Ausgabe bei beliebigem Zeichen fortsetzen.
     IXOFF     Start/Stop-Eingabesteuerung aktivieren.
     IMAXBEL   BEL bei überlanger Eingabezeile ausgeben.

     Wenn IGNBRK gesetzt ist, wird eine Break-Bedingung (ein Rahmenfehler,
     der dadurch entsteht, daß alle Daten Null sind) in der Eingabe igno-
     riert, d. h., sie wird nicht in die Eingabewarteschlange gesetzt und
     somit nicht durch einen Prozeß gelesen. Wenn IGNBRK nicht gesetzt ist
     und BRKINT gesetzt ist, werden die Ein- und Ausgabewarteschlangen bei
     einer Break-Bedingung geleert; wenn das Terminal das Steuerungstermi-
     nal einer Vordergrund-Prozeßgruppe ist, wird bei einer Break-Bedingung
     ein einzelnes SIGINT-Signal an diese Vordergrund-Prozeßgruppe übermit-
     telt. Wenn weder IGNBRK noch BRKINT gesetzt ist, wird eine Break-


Seite 9                      Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Bedingung als einzelnes ASCII NULL-Zeichen ('\0') eingelesen; wenn
     PARMRK gesetzt ist, wird eine Break-Bedingung als '\377', '\0', '\0'
     eingelesen.

     Wenn IGNPAR gesetzt ist, wird ein Byte mit Rahmen- oder Paritätsfeh-
     lern (keine Break-Bedingung) ignoriert.

     Wenn PARMRK gesetzt und IGNPAR nicht gesetzt ist, wird ein Byte mit
     einem Rahmen- oder Paritätsfehler (keine Break-Bedingung) an die
     Anwendung in Form einer dreistelligen Zeichenkette übergeben: '\377',
     '\0', X, wobei X für die Daten des fehlerhaft empfangenen Bytes steht.
     Um in einem derartigen Fall Eindeutigkeit herzustellen, wird, wenn
     ISTRIP nicht gesetzt ist, ein gültiges Zeichen '\377' an die Anwendung
     als '\377', '\377' übergeben. Wenn weder IGNPAR noch PARMRK gesetzt
     ist, wird ein Rahmen- oder Paritätsfehler (keine Break-Bedingung) an
     die Anwendung als einzelnes ASCII NULL-Zeichen ('\0') übergeben.

     Wenn INPCK gesetzt ist, wird die Paritätsprüfung für die Eingabe akti-
     viert. Wenn INPCK nicht gesetzt ist, wird die Paritätsprüfung für die
     Eingabe deaktiviert. Dies ermöglicht die Paritätserzeugung auf der
     Ausgabe, ohne daß bei der Eingabe Paritätsfehler gemeldet würden. Ob
     die Eingabe-Paritätsprüfung aktiviert ist oder nicht, ist unabhängig
     davon, ob die Paritätsfeststellung aktiviert ist oder nicht. Wenn die
     Paritätsfeststellung aktiviert und die Paritätsprüfung für die Eingabe
     deaktiviert ist, erkennt die Hardware, mit der das Terminal verbunden
     ist, das Paritätsbit; die Terminal-Gerätedatei überprüft jedoch nicht,
     ob das Paritätsbit korrekt gesetzt ist oder nicht.

     Wenn ISTRIP gesetzt ist, werden die gültigen Eingabezeichen zunächst
     auf sieben Bits gekürzt; andernfalls werden alle acht Bits verarbei-
     tet.

     Wenn INLCR gesetzt ist, wird ein NL-Zeichen nach dem Empfang in ein
     CR-Zeichen umgesetzt. Wenn IGNCR gesetzt ist, wird ein CR-Zeichen nach
     dem Empfang ignoriert (nicht gelesen). Wenn ICRNL dagegen gesetzt ist,
     wird ein CR-Zeichen nach dem Empfang in ein NL-Zeichen umgesetzt.

     Wenn IUCLC gesetzt ist, wird ein Großbuchstabe nach dem Empfang in den
     entsprechenden Kleinbuchstaben umgesetzt.

     Wenn IXON gesetzt ist, wird die Start-/Stop-Ausgabesteuerung akti-
     viert. Ein STOP-Zeichen hält die Ausgabe nach dem Empfang an, während
     ein START-Zeichen die Ausgabe nach dem Empfang wieder fortsetzt. Die
     Zeichen STOP und START werden nicht eingelesen, sondern führen ledig-
     lich Funktionen zur Flußsteuerung durch. Wenn IXANY gesetzt ist, wird
     die angehaltene Ausgabe durch ein beliebiges Eingabezeichen fortge-
     setzt.

     Wenn IXOFF gesetzt ist, übermittelt das System ein STOP-Zeichen, wenn
     die Eingabewarteschlange voll ist, und ein START-Zeichen, wenn genü-
     gend Eingabezeichen eingelesen worden sind und die Eingabewarte-
     schlange somit wieder fast leer ist.


Seite 10                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Wenn IMAXBEL gesetzt ist, wird das Zeichen ASCII BEL bei einem Über-
     lauf im Eingabestrom auf dem Bildschirm ausgegeben. Die weitere Ein-
     gabe wird nicht abgespeichert; auf die Eingabezeichen, die sich
     bereits im Eingabestrom befinden, hat dies jedoch keine Auswirkungen.
     Wenn IMAXBEL nicht gesetzt ist, wird kein BEL-Zeichen ausgegeben, und
     sämtliche in der Eingabewarteschlange enthaltenen Zeichen gehen bei
     einem Überlauf des Eingabestroms verloren.

     Die Steuerung der Dateneingabe erfolgt zu Beginn über BRKINT, ICRNL,
     IXON und ISTRIP.

   Steuerung der Datenausgabe
     Im Feld coflag wird die Behandlung der Ausgabe durch das System
     beschrieben:

      OPOST   Nachbearbeitung der Ausgabe.
      OLCUC   Kleinbuchstaben in der Ausgabe auf Großbuchstaben abbilden.
      ONLCR   NL in der Ausgabe auf CR-NL abbilden.
      OCRNL   CR in der Ausgabe auf NL abbilden.
      ONOCR   Keine CR-Ausgabe auf Spalte 0.
     ONLRET   NL führt Funktion von CR aus.
      OFILL   Füllzeichen für Verzögerung benutzen.
      OFDEL   Füllzeichen ist DEL, andernfalls NULL.
      NLDLY   Verzögerungen in Form von Zeilenendezeichen:
        NL0
        NL1
      CRDLY   Verzögerungen in Form von Carriage-Return-Zeichen:
        CR0
        CR1
        CR2
        CR3
     TABDLY   Verzögerungen in Form von Horizontal-Tabulatorzeichen
       TAB0   oder Expansion der Tabulatorzeichen:
       TAB1
       TAB2
       TAB3   Tabulatorzeichen in Leerzeichen umwandeln.
      XTABS   Tabulatorzeichen in Leerzeichen umwandeln.
      BSDLY   Verzögerungen in Form von Rückschritten:
        BS0
        BS1
      VTDLY   Verzögerungen in Form von Vertikal-Tabulatorzeichen:
        VT0
        VT1
      FFDLY   Verzögerungen in Form von Seitenvorschub-Zeichen:
        FF0
        FF1

     Wenn OPOST gesetzt ist, werden die ausgegebenen Zeichen dem Status der
     übrigen Flags entsprechend nachbearbeitet; andernfalls werden die Zei-
     chen unverändert übertragen.




Seite 11                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Wenn OLCUC gesetzt ist, wird ein Kleinbuchstabe auf den zugehörigen
     Großbuchstaben abgebildet und übertragen. Diese Funktion wird häufig
     in Kombination mit IUCLC benutzt.

     Wenn ONLCR gesetzt ist, wird das Zeichen NL auf das Zeichenpaar CR-NL
     abgebildet und übertragen. Wenn OCRNL gesetzt ist, wird das Zeichen CR
     auf das Zeichen NL abgebildet und übertragen. Wenn ONOCR gesetzt ist,
     wird kein CR-Zeichen übertragen, das sich in Spalte 0 befindet (d. h.
     an der ersten Position). Wenn ONRET gesetzt ist, wird das Zeichen NL
     für die Carriage-Return-Funktion benutzt; der Spaltenzeiger wird auf 0
     gesetzt, und die für CR angegebenen Verzögerungen werden benutzt.
     Andernfalls wird das Zeichen NL lediglich für die Zeilenvorschub-Funk-
     tion benutzt; der Spaltenzeiger bleibt unverändert. Der Spaltenzeiger
     wird ebenfalls auf 0 gesetzt, wenn das Zeichen CR tatsächlich übertra-
     gen wird.

     Die Verzögerungs-Bits geben an, wie lange die Übertragung wegen mecha-
     nischer Bewegungen oder sonstiger Verzögerungen unterbrochen wird,
     wenn bestimmte Zeichen an das Terminal übermittelt werden. Der Wert 0
     bedeutet in jedem Fall keine Verzögerung. Wenn OFILL gesetzt ist, wird
     die Verzögerung über Füllzeichen realisiert und nicht mit Hilfe eines
     Zeitgebers. Dies kann für mit hoher Geschwindigkeit betriebene Termi-
     nals benutzt werden, die nur sehr geringe Verzögerungen benötigen.
     Wenn OFDEL gesetzt ist, wird DEL als Füllzeichen benutzt, andernfalls
     NULL.

     Wenn eine Verzögerung über ein Seitenvorschub- oder ein Vertikal-
     Tabulatorzeichen realisiert wird, hat sie eine Dauer von ca. zwei
     Sekunden.

     Eine Verzögerung, die über ein Zeilenendezeichen realisiert wird, dau-
     ert ca. 0,10 Sekunden. Wenn ONLRET gesetzt ist, werden die Verzögerun-
     gen über Carriage-Return-Zeichen realisiert und nicht über Zeichenen-
     dezeichen. Wenn OFILL gesetzt ist, werden zwei Füllzeichen übertragen.

     Eine Carriage-Return-Verzögerung vom Typ 1 hängt von der aktuellen
     Spaltenposition ab, Typ 2 dauert ca. 0,10 Sekunden und Typ 3 ca. 0,15
     Sekunden. Wenn OFILL gesetzt ist, werden durch eine Verzögerung vom
     Typ 1 zwei Füllzeichen übertragen und bei einer Verzögerung vom Typ 2
     vier Füllzeichen.

     Eine durch Horizontal-Tabulatorzeichen realisierte Verzögerung vom Typ
     1 ist von der aktuellen Spaltenposition abhängig. Eine Verzögerung vom
     Typ 2 dauert ca. 0,10 Sekunden. Bei einer Verzögerung vom Typ 3 wird
     angegeben, daß die Tabulator- in Leerzeichen umgesetzt werden sollen.
     Wenn OFILL gesetzt ist, werden für jede Verzögerung zwei Füllzeichen
     übermittelt.

     Eine durch Rückschrittzeichen realisierte Verzögerung dauert ca. 0,05
     Sekunden. Wenn OFILL gesetzt ist, wird ein Füllzeichen übertragen.




Seite 12                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Die tatsächliche Dauer der Verzögerungen hängt von der Übertragungsge-
     schwindigkeit der Leitung und der Systemladezeit ab.

     Die Steuerung der Datenausgabe erfolgt zu Beginn über den Wert OPOST,
     ONLCR und TAB3.

   Steuerungs-Modi
     Das Feld ccflag beschreibt die Hardwaresteuerung des Terminals:

      CBAUD   Baudrate:
         B0   Aufhängen
        B50   50 Baud
        B75   75 Baud
       B110   110 Baud
       B134   134 Baud
       B150   150 Baud
       B200   200 Baud
       B300   300 Baud
       B600   600 Baud
      B1200   1200 Baud
      B1800   1800 Baud
      B2400   2400 Baud
      B4800   4800 Baud
      B9600   9600 Baud
     B19200   19200 Baud
       EXTA   Externes A
     B38400   38400 Baud
       EXTB   Externes B

      CSIZE   Zeichengröße:
        CS5   5 Bit
        CS6   6 Bit
        CS7   7 Bit
        CS8   8 Bit

     CSTOPB   Zwei Stop-Bits senden, sonst ein Stop-Bit
      CREAD   Empfängersystem aktivieren
     PARENB   Paritätsprüfung aktivieren
     PARODD   Ungerade Parität, sonst gerade
      HUPCL   Leitung bei letztem close-Aufruf unterbrechen
     CLOCAL   Lokale Leitung, sonst Wählleitung
     CIBAUD   Eingabe-Baudrate, falls unterschiedlich von der Ausgabe-Baudrate
     PAREXT   Erweiterte Parität des Paritätsbits für "mark" und "space parity"

     Die CBAUD-Bits geben die Baudrate an. Bei der Baudrate Null (B0) wird
     die Verbindung abgebrochen. Wenn B0 angegeben wird, wird das DTR-
     Signal (Data-Terminal-Ready) nicht bestätigt. Dadurch wird die Verbin-
     dung im Normalfall unterbrochen. Wenn die CIBAUD-Bits nicht Null sind,
     geben sie die Baudrate für die Eingabe an, wobei die CBAUD-Bits die
     Baudrate für die Ausgabe angeben; andernfalls wird die Baudrate sowohl
     für die Ein- als auch für die Ausgabe über die CBAUD-Bits angegeben.
     Die Werte für die CIBAUD-Bits entsprechen den Werten für die CBAUD-


Seite 13                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Bits, die um die IBSHIFT-Bits (also um 16 Stellen) nach links verscho-
     ben wurden. Änderungen in der Geschwindigkeit, die bei der betreffen-
     den Hardware nicht möglich sind, werden ignoriert.

     Die CSIZE-Bits geben die Zeichengröße in Bit für die Übertragung und
     den Empfang an. Die Größenangabe schließt das Paritätsbit (falls vor-
     handen) nicht ein. Wenn CSTOPB gesetzt ist, werden zwei Stop-Bits
     benutzt, andernfalls ein Stop-Bit. So sind bei 110 Baud beispielsweise
     zwei Stop-Bits notwendig.

     Wenn PARENB gesetzt ist, wird die Paritätserzeugung und -feststellung
     aktiviert und jedem Zeichen vor der Übermittlung ein Paritätsbit ange-
     fügt. Das gesetzte PARODD-Flag gibt bei aktivierter Paritätsprüfung
     die ungerade Parität an, andernfalls die gerade.

     Wenn CREAD gesetzt ist, wird der Datenempfang aktiviert. Andernfalls
     werden keine Zeichen in Empfang genommen.

     Wenn HUPCL gesetzt ist, wird die Verbindung unterbrochen, sobald der
     letzte Prozeß, für den die Leitung geöffnet ist, die Leitung mit dem
     Aufruf von close schließt oder selbst beendet wird. Das DTR-Signal
     wird somit nicht bestätigt.

     Wenn CLOCAL gesetzt ist, wird von einer lokalen Direktverbindung ohne
     Modemsteuerungssignale ausgegangen; andernfalls werden Modemsteue-
     rungssignale unterstützt.

     Beim Öffnen der Leitung wird die Hardwaresteuerung auf B300, CS8,
     CREAD, HUPCL eingestellt.

   Lokale Modi
     Das Feld clflag der Argumentstruktur wird von der Leitungsprozedur
     zur Steuerung der Terminal-Funktionen benutzt. Die grundlegende Lei-
     tungsprozedur bietet folgende Funktionen:

     ISIG      Signale aktivieren.
     ICANON    Standardmäßige ("kanonische") Verarbeitung der Eingabe (Ver-
               arbeitung des Erase- und Kill-Zeichens).
     XCASE     Standardmäßige ("kanonische") Groß-/Kleinbuchstabendar-
               stellung.
     ECHO      Echo aktivieren.
     ECHOE     Erase-Zeichen als BS-SP-BS ausgeben.
     ECHOK     Nach Kill-Zeichen NL ausgeben.
     ECHONL    NL ausgeben.
     NOFLSH    Nach Unterbrechung oder Abbruch kein Leeren der Eingabe- und
               Ausgabewarteschlange.
     TOSTOP    SIGTTOU für Ausgabe im Hintergrund übermitteln.
     ECHOCTL   Steuerzeichen als ^char auf dem Bildschirm wiedergeben, DEL
               als ^?.
     ECHOPRT   Beim Löschen eines Zeichens Erase-Zeichen ausgeben.




Seite 14                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     ECHOKE    Beim Löschen einer ganzen Zeile die Folge BS-SP-BS ausgeben.
     FLUSHO    Ausgabewarteschlange leeren.
     PENDIN    Noch nicht verarbeitete Eingabe bei nächster Leseanforderung
               oder nächstem Eingabezeichen erneut ausgeben.
     IEXTEN    Erweiterte (implementierungsspezifische) Funktionen aktivie-
               ren.

     Wenn ISIG gesetzt ist, wird jedes Eingabezeichen mit den speziellen
     Sonderzeichen INTR, QUIT, SWTCH, SUSP, STATUS und DSUSP verglichen.
     Wenn ein Eingabezeichen zu einem dieser Steuerzeichen paßt, werden die
     Funktionen ausgeführt, die diesem Zeichen zugeordnet sind. Wenn ISIG
     nicht gesetzt ist, findet keine Überprüfung statt. Diese speziellen
     Eingabefunktionen setzen somit ein gesetztes ISIG-Bit voraus.

     Wenn ICANON gesetzt ist, wird die standardmäßige ("kanonische") Verar-
     beitung der Eingabe aktiviert. Dadurch kann die Eingabe mit der ERASE-
     und KILL-Funktion geändert werden; außerdem werden Eingabezeichen zu
     Zeilen zusammengefaßt, die mit NL, EOF, EOL und EOL2 abgeschlossen
     sind. Wenn ICANON nicht gesetzt ist, werden die Zeichen direkt aus der
     Eingabewarteschlange eingelesen. Eine Leseanforderung wird erst
     erfüllt, wenn mindestens MIN Zeichen empfangen worden sind oder TIME
     Zehntelsekunden (Intercharacter-Timer) zwischen dem Empfang von zwei
     Zeichen verstrichen sind. Dadurch können sowohl stoßweise ankommende
     Zeichenströme effizient eingelesen als auch Einzelzeichen eingegeben
     werden.

     Wenn XCASE und ICANON gesetzt sind, werden Großbuchstaben sowohl bei
     der Ein- als auch bei der Ausgabe in die entsprechenden Kleinbuchsta-
     ben umgewandelt und ihnen ein Gegenschrägstrich (\) vorangestellt. In
     diesem Modus werden die folgenden Escape-Sequenzen bei der Ausgabe
     generiert und bei der Eingabe akzeptiert:

     Für: Geben Sie ein:

     `    \´
     |    \!
     ~    \^
     {    \(
     }    \)
     \    \\

     So wird A z. B. als \a eingegeben, \n als \\n und \N als \\\n.

     Wenn ECHO gesetzt ist, werden die Zeichen nach dem Empfang auf dem
     Bildschirm wiedergegeben.









Seite 15                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Wenn ICANON gesetzt ist, sind die folgenden Echo-Funktionen möglich.

     1. Wenn ECHO und ECHOE gesetzt sind und ECHOPRT nicht gesetzt ist,
        werden die Zeichen ERASE und WERASE als zwei oder mehr Folgen von
        ASCII BS SP BS; wiedergegeben; dadurch werden die letzten Zeichen
        von einem CRT-Bildschirm gelöscht.

     2. Wenn ECHO und ECHOPRT gesetzt sind, wird das erste ERASE- und
        WERASE-Zeichen innerhalb einer Folge als Gegenschrägstrich (\) wie-
        dergegeben, auf den die gerade gelöschten Zeichen folgen. Durch die
        nachfolgenden ERASE- und WERASE-Zeichen werden die gerade gelösch-
        ten Zeichen in umgekehrter Reihenfolge wiedergegeben. Durch die
        nächsten Zeichen, bei denen es sich nicht um ERASE- und WERASE han-
        delt, wird ein Schrägstrich (/) zunächst ausgegeben, bevor er wie-
        dergegeben wird. ECHOPRT sollte für Hardcopy-Terminals benutzt wer-
        den.

     3. Wenn ECHOKE gesetzt ist, wird das KILL-Zeichen wiedergegeben, indem
        jedes Zeichen gelöscht wird, das in der betreffenden Zeile des
        Bildschirms enthalten ist (hierbei werden die durch ECHOE und
        ECHOPRT eingestellten Mechanismen benutzt).

     4. Wenn ECHOK gesetzt und ECHOKE nicht gesetzt ist, wird das Zeichen
        NL nach dem ERASE-Zeichen auf dem Bildschirm ausgegeben; damit soll
        deutlich gemacht werden, daß die Zeile gelöscht ist. Beachten Sie,
        daß durch ein Escape-Zeichen (\) oder ein LNEXT-Zeichen, das dem
        ERASE- oder KILL-Zeichen vorangeht, jede Sonderfunktion aufgehoben
        wird.

     5. Wenn ECHONL gesetzt ist, wird das Zeichen NL selbst dann auf dem
        Bildschirm ausgegeben, wenn ECHO nicht gesetzt ist. Dies ist für
        Terminals sinnvoll, die auf lokales Echo (Halbduplex-Betrieb)
        gesetzt sind.

     Wenn ECHOCTL gesetzt ist, werden sämtliche Steuerzeichen (Zeichen mit
     Codes im Bereich 0 und 37 oktal), bei denen es sich nicht um ASCII
     TAB, ASCII NL, das START- Zeichen und das STOP-Zeichen, ASCII CR und
     ASCII BS handelt, als ^X auf dem Bildschirm ausgegeben; dabei steht X
     für das Zeichen, das durch die Addition des Oktalwerts 100 und des
     Codes des Steuerzeichens entsteht (das Zeichen mit dem Oktalwert 1
     wird also als ^A ausgegeben und das ASCII DEL-Zeichen mit dem Oktal-
     wert 177 wird als ^? ausgegeben).

     Wenn NOFLSH gesetzt ist, entfällt die normale Leerung der Eingabe- und
     Ausgabewarteschlangen im Zusammenhang mit den Zeichen INTR, QUIT und
     SUSP. Dieses Bit sollte beim erneuten Starten von Systemaufrufen
     gesetzt werden, die entweder von einem Terminal einlesen oder auf ein
     Terminal schreiben [siehe sigaction(2)].






Seite 16                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     Wenn TOSTOP gesetzt ist, wird das Signal SIGTTOU an den Prozeß über-
     mittelt, der auf sein Steuerungsterminal zu schreiben versucht, obwohl
     er sich nicht in der Vordergrund-Prozeßgruppe für dieses Terminal
     befindet. Durch dieses Signal wird der Prozeß im Normalfall angehal-
     ten. Andernfalls wird die durch diesen Prozeß erzeugte Ausgabe in den
     aktuellen Ausgabestrom gesetzt. Eine Ausnahme bilden hier die Pro-
     zesse, die SIGTTOU-Signale ignorieren oder blockieren; derartige Pro-
     zesse dürfen gegebenenfalls eine Ausgabe erzeugen.

     Wenn FLUSHO gesetzt ist, gehen alle auf das Terminal geschriebene
     Daten verloren. Dieses Bit wird bei der Eingabe des FLUSH-Zeichens
     gesetzt. Soll die Eingabe des FLUSH-Zeichens ohne Auswirkungen blei-
     ben, kann ein Programm das FLUSHO-Bit zurücksetzen.

     Wenn PENDIN gesetzt ist, wird sämtliche noch nicht eingelesene Eingabe
     erneut ausgegeben, sobald das nächste Eingabezeichen empfangen wird.

     Wenn IEXTEN gesetzt ist, werden die folgenden implementierungsspezifi-
     schen Funktionen aktiviert: Sonderzeichen (WERASE, REPRINT, DISCARD
     und LNEXT) und lokale Flags (TOSTOP, ECHOCTL, ECHOPRT, ECHOKE, FLUSHO
     und PENDIN).

     Die Leitungssteuerung erfolgt zu Beginn über ISIG, ICANON, ECHO,
     ECHOK.

   Mindest- und Zeitlimitwerte
     Die Werte MIN und TIME werden im Abschnitt Verzögerungsfreie Verarbei-
     tung der Eingabe beschrieben. Der Anfangswert von MIN ist 1, der von
     TIME 0.

   Größe des Terminals
     Die Anzahl der Zeilen und Spalten auf dem Bildschirm des Terminals
     wird in der Struktur winsize angegeben, die durch <sys/termios.h>
     definiert ist. Diese Struktur enthält die folgenden Elemente:

          unsigned short wsrow;     /* Zeilen, in Zeichen      */
          unsigned short wscol;     /* Spalten in Zeichen      */
          unsigned short wsxpixel;  /* Größe, in horizontaler
                                        Richtung in Bildpunkten */
          unsigned short wsypixel;  /* Größe, in vertikaler
                                        Richtung in Bildpunkten */













Seite 17                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

   termio-Struktur
     Die termio-Struktur von Reliant UNIX wird durch einige ioctl-Funktio-
     nen benutzt und in <sys/termio.h> definiert. Die Struktur enthält die
     folgenden Elemente:

          unsigned short ciflag;    /* Eingabemodi     */
          unsigned short coflag;    /* Ausgabemodi     */
          unsigned short ccflag;    /* Steuerungsmodi  */
          unsigned short clflag;    /* Lokale Modi      */
          char           cline;     /* Leitungsprozedur */
          unsigned char  ccc[NCC];  /* Steuerzeichen    */

     Die speziellen Steuerzeichen werden durch das Array ccc definiert.
     Der symbolische Name NCCS steht für die Größe des Steuerzeichen-Arrays
     und wird ebenfalls in <termios.h> definiert. Die relativen Positionen,
     Indexnamen und typischen Standardwerte für jede Funktion sind wie
     folgt festgelegt:

     0   VINTR        DEL
     1   VQUIT        FS
     2   VERASE       #
     3   VKILL        @
     4   VEOF         EOT
     5   VEOL         NUL
     6   VEOL2        NUL
     7   reserviert

     Die Systemaufrufe, die auf die termio-Struktur zugreifen, wirken sich
     ausschließlich auf die Flags und Steuerzeichen aus, die in der
     termio-Struktur gespeichert werden können; die übrigen Flags und Steu-
     erzeichen bleiben durch diese Systemaufrufe unverändert.

   Modemleitungen
     Aus den Gerätedateien für die seriellen Anschlüsse können die von der
     Hardware unterstützten Modemsteuerungsleitungen eingelesen werden; die
     von der Hardware unterstützten Modemstatusleitungen können in diesen
     Dateien geändert werden. Ein Gerät kann die folgenden Modemsteuerungs-
     und Modemstatusleitungen unterstützen; die Zeilen sind in
     <sys/termios.h> definiert:

     TIOCMLE    Leitung aktivieren
     TIOCMDTR   Terminal bereit
     TIOCMRTS   Sendeanforderung
     TIOCMST    Rückkanal Sendedaten
     TIOCMSR    Rückkanal Empfangsdaten
     TIOCMCTS   Sendebereitschaft
     TIOCMCAR   Empfangssignalpegel
     TIOCMRNG   Tonruf
     TIOCMDSR   Betriebsbereitschaft





Seite 18                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     TIOCMCD ist ein Synonym für TIOCMCAR und TIOCMRI ist ein Synonym
     für TIOCMRNG. Ein bestimmtes Gerät muß nicht unbedingt alle
     Steuerungs- und Statusleitungen unterstützen; schlagen Sie die ent-
     sprechenden Informationen in der Dokumentation für das Gerät nach.

IOCTL-FUNKTIONSAUFRUFE
     Dieser Abschnitt beschreibt die ioctl-Funktionsaufrufe, die von den
     Geräten und STREAMS-Modulen der termios-Schnittstelle unterstützt wer-
     den. Einige der Aufrufe werden möglicherweise nicht von allen Geräten
     oder Modulen unterstützt. Die Funktionen, die durch diese Aufrufe zur
     Verfügung gestellt werden, sind auch durch den bei termios(3C) angege-
     benen Systemaufruf möglich, dem im Normalfall der Vorzug gegeben wird.

     TCGETS         Das Argument ist ein Zeiger auf eine termios-Struktur.
                    Die aktuellen Terminal-Parameter werden abgerufen und
                    in dieser Struktur gespeichert.

     TCSETS         Das Argument ist ein Zeiger auf eine termios-Struktur.
                    Die aktuellen Terminal-Parameter werden aufgrund der in
                    dieser Struktur gespeicherten Werte eingestellt. Die
                    Änderung wird sofort wirksam.

     TCSETSW        Das Argument ist ein Zeiger auf eine termios-Struktur.
                    Die aktuellen Terminal-Parameter werden aufgrund der in
                    dieser Struktur gespeicherten Werte eingestellt. Die
                    Änderung wird nach der Übertragung sämtlicher in der
                    Ausgabewarteschlange enthaltenen Daten durchgeführt.
                    Dieses Format eignet sich zur Änderung von Parametern,
                    die sich auf die Ausgabe auswirken.

     TCSETSF        Das Argument ist ein Zeiger auf eine termios-Struktur.
                    Die aktuellen Terminal-Parameter werden aufgrund der in
                    dieser Struktur gespeicherten Werte eingestellt. Die
                    Änderung wird unmittelbar nach der Übermittlung sämtli-
                    cher in der Ausgabewarteschlange enthaltenen Zeichen
                    wirksam. Dabei gehen sämtliche in der Eingabewartesch-
                    lange enthaltenen Zeichen verloren.

     TCGETA         Das Argument ist ein Zeiger auf eine termio-Struktur.
                    Die aktuellen Terminal-Parameter werden abgefragt; die-
                    jenigen Parameter, die in einer termio-Struktur gespei-
                    chert werden können, werden in dieser Struktur gespei-
                    chert.

     TCSETA         Das Argument ist ein Zeiger auf eine termio-Struktur.
                    Diejenigen Terminal-Parameter, die in einer termio-
                    Struktur gespeichert werden können, werden aufgrund der
                    Werte in dieser Struktur eingestellt. Die Änderung wird
                    sofort wirksam.





Seite 19                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     TCSETAW        Das Argument ist ein Zeiger auf eine termio-Struktur.
                    Diejenigen Terminal-Parameter, die in einer termio-
                    Struktur gespeichert werden können, werden aufgrund der
                    Werte in dieser Struktur eingestellt. Die Änderung wird
                    nach der Übertragung sämtlicher in der Ausgabewarte-
                    schlange enthaltenen Zeichen wirksam. Diese Variante
                    sollte bei der Änderung von Parametern benutzt werden,
                    durch die die Ausgabe verändert wird.

     TCSETAF        Das Argument ist ein Zeiger auf eine termio-Struktur.
                    Diejenigen Terminal-Parameter, die in einer termio-
                    Struktur gespeichert werden können, werden aufgrund der
                    Werte in dieser Struktur eingestellt. Die Änderung wird
                    nach der Übertragung sämtlicher in der Ausgabewarte-
                    schlange enthaltenen Zeichen durchgeführt. Sämtliche
                    Zeichen in der Eingabewarteschlange werden gelöscht,
                    und dann wird die Änderung durchgeführt.

     TCSBRK         Das Argument ist ein int-Wert. Es wird gewartet, bis
                    die Ausgabewarteschlange geleert ist. Beim Argument 0
                    wird ein Break-Zeichen (0,25 Sekunden lang Bits mit dem
                    Wert Null) übermittelt.

     TCXONC         Start/Stop-Steuerung. Das Argument ist ein int-Wert.
                    Beim Wert 0 wird die Ausgabe angehalten; beim Wert 1
                    wird die angehaltene Ausgabe fortgesetzt; beim Wert 2
                    wird die Eingabe angehalten; beim Wert 3 wird die ange-
                    haltene Eingabe erneut gestartet.

     TCFLSH         Das Argument ist ein int-Wert. Beim Argument 0 wird die
                    Eingabewarteschlange geleert; beim Argument 1 wird die
                    Ausgabewarteschlange geleert; beim Argument 2 wird
                    sowohl die Ein- als auch die Ausgabewarteschlange
                    geleert.

     TIOCGPGRP      Das Argument ist ein Zeiger auf eine pidt-Struktur.
                    Der Wert dieser pidt wird auf die Prozeßgruppennummer
                    der Vordergrund-Prozeßgruppe gesetzt, die dem Terminal
                    zugeordnet ist. Nähere Informationen zu TCGETPGRP fin-
                    den Sie unter termios(3C).

     TIOCSPGRP      Das Argument ist ein Zeiger auf eine pidt-Struktur.
                    Dem Terminal wird diejenige Prozeßgruppe zugeordnet,
                    deren Prozeßgruppennumer durch den Wert von pidt ange-
                    geben wird. Die neue Prozeßgruppennummer muß im zuläs-
                    sigen Bereich der Prozeßgruppennummern liegen; andern-
                    falls wird der Fehler EPERM zurückgegeben. Nähere
                    Informationen zu TCSETPGRP finden Sie unter der
                    Beschreibung von termios(3C).





Seite 20                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     TIOCGSID       Das Argument ist ein Zeiger auf eine pidt-Struktur.
                    Die Sitzungsnummer des Terminals wird abgerufen und in
                    pidt gespeichert.

     TIOCGWINSZ     Das Argument ist ein Zeiger auf eine winsize-Struktur.
                    In dieser Struktur wird die Größe des Terminals gespei-
                    chert, die dann an den Treiber übermittelt wird.

     TIOCSWINSZ     Das Argument ist ein Zeiger auf eine winsize-Struktur.
                    Aufgrund der Werte in dieser Struktur wird dem
                    Terminal-Treiber die Größe des Terminals übermittelt.
                    Wenn die neuen Größen sich von den alten unterscheiden,
                    wird ein SIGWINCH-Signal an die Prozeßgruppe des Termi-
                    nals übermittelt.

     TIOCMBIS       Das Argument ist ein Zeiger auf eine Variable vom Typ
                    int, dessen Wert eine Maske mit den zu aktivierenden
                    Modemsteuerungsleitungen ist. Die Steuerungsleitungen,
                    deren Bits im Argument gesetzt sind, werden aktiviert;
                    die übrigen Steuerungsleitungen bleiben unverändert.

     TIOCMBIC       Das Argument ist ein Zeiger auf eine Variable vom Typ
                    int. Der Wert dieser Variablen ist eine Maske mit den
                    zu deaktivierenden Modemsteuerungsleitungen. Die Steue-
                    rungsleitungen, deren Bits im Argument gesetzt sind,
                    werden deaktiviert; die übrigen Modemsteuerungsleitun-
                    gen bleiben unverändert.

     TIOCMGET       Das Argument ist ein Zeiger auf eine Variable vom Typ
                    int. Der aktuelle Status der Modemstatusleitungen wird
                    abgerufen und in der int-Variablen abgespeichert, auf
                    die das Argument zeigt.

     TIOCMSET       Das Argument ist ein Zeiger auf eine Variable vom Typ
                    int mit den neuen Modemsteuerungsleitungen. Abhängig
                    davon, ob das Bit für den betreffenden Modus gesetzt
                    ist oder nicht, werden die Modemsteuerungsleitungen
                    aktiviert oder deaktiviert.

     Standardparameter für den Anschluß
                    Die Standardparameter für den Anschluß sind HUPCL, 9600
                    Baud, CREAD, CS08, Noparity.

     Die folgenden ioctl-Aufrufe werden von den gängigen STREAMS-Terminal-
     treibern (d. h. nur für an ITP-Anschlüsse angeschlossene Geräte) für
     die Implementierung der Funktion "login path", die sich bewährt hat,
     des wahlfreien Commercial Security Product (CSP) unterstützt. Die
     ioctl-Aufrufe verursachen Fehler, es sei denn, CSP ist im Betriebssy-
     stem installiert.





Seite 21                     Reliant UNIX 5.44               Gedruckt 11/98

termio(7)                                                         termio(7)

     TIOCSSECURE    Das Argument wird ignoriert. In der Regel wird angenom-
                    men, daß die Leitung vom Modem gesteuert wird, (d. h.
                    Einstellungen unter CLOCAL werden ignoriert). Wurde
                    diese Einstellung einmal aktiviert, kann sie nicht wie-
                    der manuell deaktiviert werden. Sie wird vom Treiber
                    automatisch deaktiviert, wenn das Gerät von keinem Pro-
                    zeß mehr geöffnet ist.

     TIOCGSECURE    Das Argument wird ignoriert. Der ioctl-Aufruf übergibt
                    1, wenn die TIOCSSECURE-Einstellung des Geräts akti-
                    viert ist. Es wird daher in der Regel angenommen, daß
                    das Modem die Steuerung übernimmt. Andernfalls wird 0
                    übergeben.

DATEIEN
     Dateien in oder unter /dev

SIEHE AUCH
     fork(2), ioctl(2), setsid(2), signal(2), termios(3C), streamio(7).



































Seite 22                     Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026