Die Komponente c_iflag
beschreibt die grundlegende Eingabesteuerung des Terminals:
Maskenname | Beschreibung |
| Signal |
|
|
|
|
|
|
| Zeichen mit Paritätsfehler ignorieren |
|
|
| Paritätsprüfung für Eingabe aktivieren |
| 8. Bit des Eingabezeichens löschen |
|
|
|
|
| Paritätsfehler markieren |
| Bei Eingabe Groß- in Kleinbuchstaben umwandeln. |
| Fortsetzung der Ausgabe durch beliebiges Eingabezeichen |
Im Zusammenhang mit der asynchronen Datenübertragung über eine serielle Schnittstelle ist ein break
als eine Folge von 0-Bits definiert, deren Übertragung länger dauert, als für die Übertragung eines Bytes notwendig ist. Die gesamte Folge von 0-Bits wird als ein einziges break
interpretiert, auch wenn es sich dabei um eine Folge handelt, die mehrere Bytes lang ist. In anderen Zusammenhängen als der asynchronen seriellen Datenübertragung ist die Bedeutung eines break
nicht festgelegt.
Bei gesetztem IGNBRK
wird ein in der Eingabe auftretendes break
ignoriert, d.h. nicht in den Eingabepuffer eingetragen und deshalb von keinem Prozess gelesen. Bei gesetztem BRKINT
dagegen erzeugt ein break
ein einzelnes Unterbrechungssignal SIGINT
und sowohl die Ein- als auch die Ausgabepuffer werden gelöscht. Wenn weder IGNBRK
noch BR-KINT
gesetzt ist, dann wird ein break
als einzelnes Zeichen \0
gelesen, wenn PARMRK
gesetzt ist, dann als \377
, \0
, \0
.
Ist IGNPAR
gesetzt, dann wird jedes Byte mit einem Zeichen- oder Paritätsfehler ungleich einem break
ignoriert.
Wenn PARMRK
gesetzt und IGNPAR
nicht gesetzt ist, dann wird jedes Byte mit einem Rahmen- oder Paritätsfehler, welches ungleich einem break
ist, als eine Folge von drei Zeichen weitergegeben: \377
, \0
und X
, wobei \377
und \0
ein 2 Byte langes Kennzeichen für jede dieser Sequenzen ist und X
dem fehlerhaften Zeichen entspricht. Um Zweifelsfälle auszuschließen wird, wenn ISTRIP
nicht gesetzt ist, ein gültiges Zeichen \377
als \377
, \377
an die Anwendung ausgeliefert. Wenn weder PARMRK
noch IGNPAR
gesetzt ist, dann wird ein Rahmen- oder Paritätsfehler, der ungleich einem break
ist, als ein einzelnes Zeichen \0
an die Anwendung weitergegeben.
Bei gesetztem INPCK
wird die Paritätsprüfung bei der Eingabe aktiviert. Bei nicht gesetztem INPCK
wird die eingabeseitige Paritätsprüfung deaktiviert. Damit kann das Paritätsbit bei der Ausgabe ohne Berücksichtigung von eventuellen Paritätsfehlern bei der Eingabe erzeugt werden.
Hinweis
Ob die Paritätsprüfung bei der Eingabe aktiviert oder deaktiviert ist, hängt nicht davon ab, ob die Paritäts-Erkennung aktiviert oder deaktiviert ist (siehe auch Abschnitt "Steuermodi“). Wenn die Paritätserkennung aktiviert, die Paritätsprüfung bei der Eingabe jedoch deaktiviert ist, dann erkennt zwar die Hardware, mit der das Terminal verbunden ist, das Paritätsbit, aber die Terminal
-Gerätedatei überprüft nicht, ob dieses Bit korrekt gesetzt ist.
Bei gesetztem INLCR
wird ein empfangenes NL
-Zeichen (Zeilenvorschub) in ein CR
-Zeichen (Wagenrücklauf) umgewandelt. Bei gesetztem IGNCR
wird ein empfangenes CR
-Zeichen ignoriert (nicht gelesen). Ist dagegen IGNCR
nicht gesetzt und ICRNL
gesetzt, so wird ein empfangenes CR
-Zeichen in ein NL
-Zeichen umgewandelt.
Bei gesetztem IUCLC
wird ein empfangener Großbuchstabe in den entsprechenden Kleinbuchstaben umgewandelt. (Wird zukünftig vom X/Open-Standard nicht mehr unterstützt.)
Bei gesetztem IXON
wird die Ausgabesteuerung mit START/STOP
aktiviert. Bei Empfang eines STOP
-Zeichens wird die Ausgabe angehalten und bei Empfang eines START
-Zeichens fortgesetzt. Die Steuerzeichen für START
und STOP
werden bei einer Leseoperation nicht gelesen, führen jedoch die Funktionen der Flusssteuerung aus, wenn IXON
gesetzt ist. Ist IXON
nicht gesetzt, dann werden START
- und STOP
-Zeichen gelesen. Bei gesetztem IXANY
wird die angehaltene Ausgabe durch die Eingabe eines beliebigen Zeichens fortgesetzt.
Bei gesetztem IXOFF
ist die Eingabe-Flusssteuerung aktiviert. Das System überträgt STOP
-Zeichen, um das Terminal zu veranlassen, keine weiteren Daten mehr zu übertragen, wenn dies notwendig ist, um ein Überlaufen des Eingabepuffers zu verhindern (nicht mehr als {MAX_INPUT}
Byte sind erlaubt). Es überträgt START
-Zeichen, um das Terminal zu veranlassen, die Übertragung von Daten wieder aufzunehmen, sobald dies wieder ohne Gefahr eines Überlaufs des Eingabepuffers möglich ist.
Der Anfangswert für die Eingabemodi nach open()
ist, dass kein Bit gesetzt ist.