Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ termios(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

setpgid(2)

setsid(2)

unistd(4)

termios(5)

types(5)

termio(7)

termios(3C)                                                     termios(3C)

NAME
     termios: tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
     cfgetospeed, cfsetospeed, cfgetispeed, cfsetispeed, tcgetpgrp,
     tcsetpgrp, tcgetsid - Allgemeine Terminalschnittstelle

SYNTAX
     #include <termios.h>

     int tcgetattr(int fildes, struct termios *termiosp);

     int tcsetattr(int fildes, int optionalactions,
                   const struct termios *termiosp);

     int tcsendbreak(int fildes, int duration);

     int tcdrain(int fildes);

     int tcflush(int fildes, int queueselector);

     int tcflow(int fildes, int action);

     speedt cfgetospeed(const struct termios *termiosp);

     int cfsetospeed(const struct termios *termiosp, speedt speed);

     speedt cfgetispeed(const struct termios *termiosp);

     int cfsetispeed(const struct termios *termiosp, speedt speed);

     #include <sys/types.h>
     #include <unistd.h>

     pidt tcgetpgrp(int fildes);

     int tcsetpgrp(int fildes, pidt pgid);

     pidt tcgetsid(int fildes);

BESCHREIBUNG
     Diese Funktionen beschreiben eine allgemeine Terminalschnittstelle zur
     Steuerung asynchroner Kommunikationsanschlüsse. Eine detailliertere
     Übersicht der Terminalschnittstelle kann in termio(7) gefunden werden;
     dort wird außerdem eine ioctl(2)-Schnittstelle beschrieben, welche
     dieselbe Funktionalität besitzt. Trotz allem ist die hier beschriebene
     Schnittstelle die bevorzugte.

     Viele der hier beschriebenen Funktionen verwenden ein termiosp-Argu-
     ment, welches den Zeiger auf eine termios-Struktur darstellt. Diese
     Struktur enthält die folgenden Komponenten:






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

termios(3C)                                                     termios(3C)

        tcflagt   ciflag;        /* Eingabemodi */
        tcflagt   coflag;        /* Ausgabemodi */
        tcflagt   ccflag;        /* Kontrollmodi */
        tcflagt   clflag;        /* Lokale Modi */
        cct       ccc[NCCS];     /* Steuerzeichen */

     Diese Strukturkomponenten werden in termio(7) genau beschrieben.

   Terminalattribute abrufen und schreiben

     Die Funktion tcgetattr() liest die Parameter, welche mit dem Objekt
     fildes verknüpft sind, und speichert sie in der Struktur termios, wel-
     che durch termiosp bezeichnet wird. Diese Funktion kann von einem
     Hintergrundprozeß aufgerufen werden; die Terminaleigenschaften können
     danach von einem Vordergrundprozeß geändert werden.

     Die Funktion tcsetattr() stellt die mit dem Terminal verbundenen Para-
     meter ein (es sei denn, die zugrundeliegende Hardware bietet nicht die
     benötigte Unterstützung). Die Parameter werden der Struktur termios
     entnommen, welche durch termiosp wie folgt bezeichnet wird:

     -  Enthält das Feld optionalactions den Wert TCSANOW, erfolgt die
        Änderung sofort.

     -  Ist optionalactions gleich TCSADRAIN, erfolgt die Änderung, nach-
        dem alle Ausgaben für fildes übertragen wurden. Diese Funktion
        sollte verwendet werden, wenn Parameter geändert werden, welche
        Ausgaben beeinträchtigen.

     -  Wenn optionalactions TCSAFLUSH enthält, erfolgt die Änderung,
        nachdem alle Ausgaben an das Objekt fildes übertragen wurden; alle
        empfangenen aber nicht gelesenen Eingaben werden gelöscht, bevor
        die Änderung vergenommen wird.

     Die symbolischen Konstanten für die Werte aus optionalactions werden
     in der Datei termios.h [siehe termios(5)] definiert.

   Leitungssteuerung

     Wenn das Terminal die asynchrone serielle Datenübertragung verwendet,
     verursacht die Funktion tcsendbreak() die Übertragung eines ununter-
     brochenen Stroms von Nullbits für eine bestimmte Dauer. Ist duration
     Null, wird die Übertragung von Nullbits für mindestens 0,25 Sekunden
     und nicht mehr als 0,5 Sekunden aktiviert. Ist duration nicht Null,
     verhält es sich ähnlich wie bei tcdrain().

     Verwendet das Terminal nicht die asynchrone serielle Datenübertragung,
     sendet die Funktion tcsendbreak() Daten, um eine Break-Bedingung zu
     generieren, oder es wird keine Aktion ausgeführt.

     Die Funktion tcdrain() wartet, bis alle Ausgaben an das Objekt fildes
     übertragen wurden.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

termios(3C)                                                     termios(3C)

     Bei erfolgreicher Beendigung löscht die Funktion tcflush() alle Daten,
     die auf das Objekt fildes geschrieben, aber nicht übertragen wurden,
     oder Daten, die empfangen, aber nicht gelesen wurden, abhängig vom
     Wert queueselector:

     -  Ist queueselector gleich TCIFLUSH, werden Daten gelöscht, welche
        empfangen und nicht gelesen wurden.

     -  Enthält queueselector den Wert TCOFLUSH, werden Daten gelöscht,
        welche geschrieben, aber nicht übertragen wurden.

     -  Wenn queueselector gleich TCIOFLUSH ist, werden sowohl empfangene,
        nicht gelesene Daten als auch geschriebene, nicht übertragene Daten
        gelöscht.

     Die Funktion tcflow () hält die Übertragung oder den Empfang von Daten
     für das Objekt fildes an, abhängig vom Wert action:

     -  Ist action gleich TCOOFF, wird die Ausgabe angehalten.

     -  Ist action gleich TCOON, wird die angehaltene Ausgabe wieder
        gestartet.

     -  Wenn action gleich TCIOFF ist, überträgt das System ein STOP-Zei-
        chen, welches das Terminal dazu veranlaßt, die Datenübertragung zum
        System zu stoppen.

     -  Wenn action gleich TCION ist, überträgt das System ein START-Zei-
        chen, welches das Terminal dazu veranlaßt, die Datenübertragung an
        das System zu beginnen.

   Baudrate abrufen und setzen

     Die Funktionen zum Lesen und Setzen der Ein- und Ausgabebaudraten ver-
     arbeiten die Werte aus der Struktur termios. Die Auswirkungen auf das
     Terminalgerät, welche weiter unten beschrieben werden, werden nicht
     wirksam, bis die Funktion tcsetattr() erfolgreich ausgeführt wird.

     Die Eingabe- und Ausgabebaudraten werden in der Struktur termios abge-
     legt. Die in der Tabelle abgebildeten Übertragungsraten werden unter-
     stützt. Die Namen aus der Tabelle werden in der Datei termios.h defi-
     niert:












Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

termios(3C)                                                     termios(3C)

               __________________________________________________
              | Name   Beschreibung        Name     Beschreibung|
              |_________________________________________________|
              | B0     Auflegen (Hangup)   B600        600 Baud |
              | B50          50 Baud       B1200      1200 Baud |
              | B75          75 Baud       B1800      1800 Baud |
              | B110        110 Baud       B2400      2400 Baud |
              | B134      134,5 Baud       B4800      4800 Baud |
              | B150        150 Baud       B9600      9600 Baud |
              | B200        200 Baud       B19200    19200 Baud |
              | B300        300 Baud       B38400    38400 Baud |
              |_________________________________________________|

     cfgetospeed() liest die Ausgabebaudrate und speichert sie in der
     termios-Struktur, auf die termiosp zeigt.

     cfsetospeed() setzt die Ausgabebaudrate, welche sich in der termios-
     Struktur befindet, auf die termiosp zeigt, auf speed. Die Nullrate B0
     wird verwendet, um die Verbindung zu beenden. Wird B0 angegeben, wer-
     den die Steuerleitungen des Modems nicht länger verarbeitet. Normaler-
     weise beendet dies die Verbindung.

     cfgetispeed() liest die Eingabebaudrate und speichert sie in der
     termios-Struktur, auf die termiosp zeigt.

     cfsetispeed() stellt die Eingabebaudrate, die in der termios-Struktur
     gespeichert ist, auf die termiosp zeigt, auf speed. Wenn die Eingabe-
     baudrate auf Null gesetzt wird, wird die Eingabebaudrate auf den Wert
     der Ausgabebaudrate gesetzt. Sowohl cfsetispeed() als auch
     cfsetospeed() liefern den Wert Null zurück, wenn die Operation erfol-
     greich ausgeführt wurde, und -1, wenn ein Fehler aufgetreten ist. Ver-
     suche, nicht unterstützte Baudraten anzugeben, werden ignoriert. Dies
     bezieht sich auf die Änderung von Baudraten, welche nicht von der
     Hardware unterstützt werden, und auf die Einstellung von Ein- und Aus-
     gabebaudraten auf unterschiedliche Werte, wenn die Hardware dies nicht
     erlaubt.

   Vordergrundprozeßgruppen-ID eines Terminals abrufen und setzen

     tcsetpgrp() stellt die Vordergrundprozeßgruppen-ID des durch fildes
     angegebenen Terminals auf pgid. Die Datei fildes muß ein steuerndes
     Terminal des aufrufenden Prozesses bezeichnen, und das steuernde Ter-
     minal muß mit der Sitzung des aufrufenden Prozesses verbunden sein.
     pgid muß der Prozeßgruppen-ID eines Prozesses entsprechen, der sich in
     derselben Sitzung wie der aufrufende Prozeß befindet.

     tcgetpgrp() liefert die Vordergrundprozeßgruppen-ID des durch fildes
     angegebenen Terminals. tcgetpgrp() kann durch einen Prozeß aufgerufen
     werden, der zu einer Hintergrundprozeßgruppe gehört. Die Informationen
     können nachher durch einen Prozeß geändert werden, der zu einer Vor-
     dergrundprozeßgruppe gehört.



Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

termios(3C)                                                     termios(3C)

   Sitzungs-ID des Terminals abrufen

     Die Funktion tcgetsid() ruft die Prozeßgruppen-ID der Sitzung ab, die
     von dem Terminal gesteuert wird, das durch fildes angegeben ist.

ERGEBNIS
     Bei Erfolg wird von tcgetpgrp() die Prozeßgruppen-ID der Vordergrund-
     prozeßgruppe zurückgeliefert, welche mit dem angegebenen Terminal ver-
     bunden ist. Ansonsten wird -1 zurückgegeben und errno gesetzt.

     Bei Erfolg liefert tcgetsid() die Sitzungs-ID, die mit dem angegebenen
     Terminal verbunden ist. Ansonsten wird -1 zurückgegeben und errno
     gesetzt.

     Die Funktion cfgetispeed() liefert bei erfolgreicher Beendigung einen
     Wert vom Typ speedt zurück, der die Eingabebaudrate repräsentiert.
     Die Funktion cfgetospeed() liefert bei erfolgreicher Beendigung eben-
     falls einen Wert vom Typ speedt zurück, der die Ausgabebaudrate
     repräsentiert. Beide Funktionen liefern den Wert aus der termios-
     Struktur ohne Interpretation.

     Bei Erfolg liefern alle anderen Funktionen den Wert 0. Ansonsten wird
     -1 zurückgegeben und errno gesetzt.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     Die Funktionen schlagen fehl, wenn wenigstens eine der folgenden
     Bedingungen erfüllt ist:

     EBADF     Das Argument fildes ist kein gültiger Dateideskriptor.

     ENOTTY    Die Datei fildes ist kein Terminal.

     Die Funktionen cfsetispeed() und cfsetospeed() können bei folgenden
     Bedingungen fehlschlagen:

     EINVAL    Der Wert von speed ist keine gültige Baudrate.

     EINVAL    Der Wert von speed liegt außerhalb des gültigen Bereichs wie
               in termios.h angegeben.

     tcsetattr() schlägt außerdem fehl, wenn folgende Bedingung wahr ist:

     EINVAL    Das Argument optionalactions enthält keinen angemessenen
               Wert, oder es wurde versucht, ein in der termios-Struktur
               dargestelltes Attribut auf einen nicht unterstützten Wert
               einzustellen.




Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

termios(3C)                                                     termios(3C)

     EINTR     Die Funktion tcsetattr() wurde durch ein Signal unterbro-
               chen.

     tcsendbreak() schlägt außerdem fehl, wenn folgende Bedingung wahr ist:

     EINVAL    Das Gerät unterstützt die Funktion tcsendbreak() nicht.

     tcdrain() schlägt außerdem fehl, wenn eine der folgenden Bedingungen
     erfüllt ist:

     EINTR     Die Funktion tcdrain() wurde durch ein Signal unterbrochen.

     EINVAL    Das Gerät unterstützt die Funktion tcdrain() nicht.

     tcflush() schlägt außerdem fehl, wenn folgende Bedingung erfüllt ist:

     EINVAL    Das Gerät unterstützt die Funktion tcflush() nicht, oder das
               Argument queueselector enthält keinen entsprechenden Wert.

     tcflow() schlägt außerdem fehl, wenn folgende Bedingung erfüllt ist:

     EINVAL    Das Gerät unterstützt die Funktion tcflow() nicht, oder
               action enthält keinen entsprechenden Wert.

     tcgetpgrp() schlägt außerdem fehl, wenn folgende Bedingung erfüllt
     ist:

     ENOTTY    Der aufrufende Prozeß hat kein steuerndes Terminal, oder
               fildes entspricht nicht dem steuernden Terminal.

     tcsetpgrp() schlägt außerdem fehl, wenn folgende Bedingung erfüllt
     ist:

     EINVAL    pgid ist keine gültige Prozeßgruppen-ID.

     ENOTTY    Der aufrufende Prozeß besitzt kein steuerndes Terminal, oder
               fildes entspricht nicht dem steuernden Terminal, oder das
               steuernde Terminal ist nicht mehr mit der Sitzung des aufru-
               fenden Prozesses verbunden.

     EPERM     pgid entspricht nicht der Prozeßgruppe eines existierenden
               Prozesses in derselben Sitzung wie der aufrufende Prozeß.

     tcgetsid() schlägt außerdem fehl, wenn folgende Bedingung erfüllt ist:

     EACCES    Das Argument fildes ist keinem steuernden Terminal zugeord-
               net.

     EBADF     Das Argument fildes ist kein gültiger Dateideskriptor.

     ENOTTY    Die fildes zugeordnete Datei ist keine Terminaldatei.



Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

termios(3C)                                                     termios(3C)

SIEHE AUCH
     setpgid(2), setsid(2), unistd(4), termios(5), types(5), termio(7).




















































Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

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