.\" -*- coding: UTF-8 -*- .\" Copyright 2002 Walter Harms .\" and Andries Brouwer . .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" Distributed under GPL .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH IOCTL_TTY 2 "15. September 2017" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG ioctl_tty \- Ioctls für Terminals und serielle Leitungen .SH ÜBERSICHT \fB#include \fP .PP \fBint ioctl(int \fP\fIdd\fP\fB, int \fP\fIBef\fP\fB, …);\fP .SH BESCHREIBUNG Der \fBioctl\fP(2)\-Aufruf für Terminals und serielle Ports akzeptiert viele mögliche Befehlzeilenargumente. Die meisten erwarten ein drittes Argument, von verschiedenem Typ, hier \fIargp\fP oder \fIarg\fP genannt. .PP Durch die Verwendung von \fIioctl\fP entstehen nichtportierbare Programme. Verwenden Sie die POSIX\-Schnittstelle, wie in \fBtermios\fP(3) beschrieben, wann immer möglich. .SS "Terminal\-Attribute ermitteln und setzen" .TP \fBTCGETS struct termios *\fP\fIargp\fP äquivalent zu \fItcgetattr(dd, argp)\fP .br Einstellungen der aktuellen seriellen Schnittstelle ermitteln .TP \fBTCSETS const struct termios *\fP\fIargp\fP äquivalent zu \fItcsetattr(dd, TCSANOW, argp)\fP .br Einstellungen der aktuellen seriellen Schnittstelle setzen .TP \fBTCSETSW const struct termios *\fP\fIargp\fP äquivalent zu \fItcsetattr(dd, TCSADRAIN, argp)\fP .br Erlaubt dem Ausgabepuffer, leerzulaufen, und setzt die aktuellen Einstellungen serieller Ports. .TP \fBTCSETSF const struct termios *\fP\fIargp\fP äquivalent zu \fItcsetattr(dd, TCSAFLUSH, argp)\fP .br Erlaubt dem Ausgabepuffer, leerzulaufen, verwirft wartende Eingaben und setzt die aktuellen Einstellungen serieller Ports. .PP Die folgenden vier Ioctls sind genau wie \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP, \fBTCSETSF\fP, außer dass Sie ein \fIstruct termio\ *\fP statt eines \fIstruct termios\ *\fP erwarten. .IP \fBTCGETA struct termio *\fP\fIargp\fP .IP \fBTCSETA const struct termio *\fP\fIargp\fP .IP \fBTCSETAW const struct termio *\fP\fIargp\fP .IP \fBTCSETAF const struct termio *\fP\fIargp\fP .SS "Sperren der Struktur Termios" Die Struktur \fItermios\fP eines Terminals kann gesperrt werden. Die Sperre ist selbst eine Struktur \fItermios\fP, bei der von Null verschiedene Bits die gesperrten Werte anzeigen. .TP \fBTIOCGLCKTRMIOS struct termios *\fP\fIargp\fP Ermittelt den Status der Sperren der Struktur \fItermios\fP des Terminals. .TP \fBTIOCSLCKTRMIOS const struct termios *\fP\fIargp\fP Setzt den Status der Sperren der Struktur \fItermios\fP des Terminals. Nur Prozesse mit der Capability \fBCAP_SYS_ADMIN\fP können dies tun. .SS "Fenstergröße ermitteln und setzen" Fenstergrößen werden im Kernel gehalten, dort aber nicht verwandt (außer im Falle der virtuellen Konsolen, bei denen der Kernel die Fenstergrößen aktualisiert, wenn sich die Größe der virtuellen Konsolen ändert, beispielsweise durch Laden einer neuen Schriftart). .PP Die folgenden Konstanten und Strukturen sind in \fI\fP definiert. .TP \fBTIOCGWINSZ struct winsize *\fP\fIargp\fP Fenstergröße ermitteln. .TP \fBTIOCSWINSZ const struct winsize *\fP\fIargp\fP Fenstergröße setzen. .PP Das von diesen Ioctls verwandte Struct ist wie folgt definiert: .PP .in +4n .EX struct winsize { unsigned short ws_row; unsigned short ws_col; unsigned short ws_xpixel; /* unbenutzt */ unsigned short ws_ypixel; /* unbenutzt */ }; .EE .in .PP Wenn sich die Fenstergröße ändert, wird das Signal \fBSIGWINCH\fP an die Vordergrund\-Prozessgruppe gesandt. .SS "Senden einer Unterbrechung" .TP \fBTCSBRK int \fP\fIarg\fP äquivalent zu \fItcsendbreak(dd, arg)\fP .br Falls das Terminal asynchrone Datenübertragung verwendet und \fIarg\fP Null ist, wird eine Unterbrechung (ein Strom von Null\-Bits) für 0,25\-0,5 Sekunden gesandt. Falls das Terminal keine asynchrone serielle Datenübertragung verwendet, wird entweder eine Unterbrechung gesandt oder die Funktion kehrt ohne Aktion zurück. Falls \fIarg\fP nicht Null ist, ist die Aktion undefiniert. .IP (SVr4, UnixWare, Solaris und Linux behandeln \fItcsendbreak(dd,arg)\fP mit von Null verschiedenem \fIarg\fP wie \fItcdrain(dd)\fP. SunOS behandelt \fIarg\fP als Multiplikator und schickt einen Bitstrom, der \fIarg\fP\-mal so lang wie bei \fIarg\fP gleich Null ist. DG/UX und AIX behandeln \fIarg\fP (wenn von Null verschieden) als Zeitintervall in Millisekunden. HP\-UX ignoriert \fIarg\fP.) .TP \fBTCSBRKP int \fP\fIarg\fP Sogenannte »POSIX\-Version« von \fBTCSBRK\fP. Sie behandelt von Null verschiedene \fIarg\fP als in Dezisekunden gemessenes Zeitintervall und führt nichts aus, falls der Treiber Unterbrechungen nicht unterstützt. .TP \fBTIOCSBRK void\fP Schaltet Unterbrechungen ein, d.h. beginnt das Senden von Null\-Bits. .TP \fBTIOCCBRK void\fP Schaltet Unterbrechungen aus, d.h. beendet das Senden von Null\-Bits. .SS Software\-Flusssteuerung .TP \fBTCXONC int \fP\fIarg\fP äquivalent zu \fItcflow(dd, arg)\fP .br siehe \fBtcflow\fP(3) für die Argumentwerte \fBTCOOFF\fP, \fBTCOON\fP, \fBTCIOFF\fP, \fBTCION\fP .SS "Pufferzählung und \-leerung" .TP \fBFIONREAD int *\fP\fIargp\fP Die Anzahl der Bytes im Eingabepuffer ermitteln. .TP \fBTIOCINQ int *\fP\fIargp\fP identisch zu \fBFIONREAD\fP .TP \fBTIOCOUTQ int *\fP\fIargp\fP Die Anzahl der Bytes im Ausgabepuffer ermitteln. .TP \fBTCFLSH int \fP\fIarg\fP äquivalent zu \fItcflush(dd, arg)\fP .br siehe \fBtcflush\fP(3) für die Argumentwerte \fBTCIFLUSH\fP, \fBTCOFLUSH\fP und \fBTCIOFLUSH\fP .SS "Eingabe vortäuschen" .TP \fBTIOCSTI const char *\fP\fIargp\fP Das angegebene Byte in die Eingabewarteschlange einfügen. .SS "Konsolenausgabe umleiten" .TP \fBTIOCCONS void\fP Lenkt die Ausgabe, die an \fI/dev/console\fP oder \fI/dev/tty0\fP gegangen wäre, an das angegebene Terminal um. Falls das ein Pseudoterminal\-Master war, wird es an den Slave gesandt. Unter Linux kann dies vor Version 2.6.10 jeder tun, solange die Ausgabe noch nicht umgeleitet worden war; seit Version 2.6.10 kann dies nur ein Prozess mit der Capability \fBCAP_SYS_ADMIN\fP tun. Falls die Ausgabe bereits umgeleitet worden war, wird \fBEBUSY\fP zurückgeliefert. Die Umleitung kann aber beendet werden, indem Ioctl mit einem \fIdd\fP, der auf \fI/dev/console\fP oder \fI/dev/tty0\fP zeigt, verwandt wird. .SS "Steuerndes Terminal" .TP \fBTIOCSCTTY int \fP\fIarg\fP Macht das angegebene Terminal zum steuernden Terminal des aufrufenden Prozesses. Der aufrufende Prozess muss ein Sitzungsleiter sein und darf noch kein steuerndes Terminal haben. Für diesen Fall sollte \fIarg\fP als Null angegeben werden. .IP Falls dieses Terminal bereits das steuernde Terminal einer anderen Sitzungsgruppe ist, schlägt der Ioctl mit \fBEPERM\fP fehl. Verfügt der Aufrufende allerdings über die Capability \fBCAP_SYS_ADMIN\fP und ist \fIarg\fP 1, dann wird das Terminal gestohlen und alle Prozesse, die es als steuerndes Terminal hatten, verlieren es. .TP \fBTIOCNOTTY void\fP Falls das angegebene Terminal das steuernde Terminal des aufrufenden Prozesses war, wird dieses steuernde Terminal aufgegeben. Falls der Prozess der Sitzungsleiter war, dann wird \fBSIGHUP\fP und \fBSIGCONT\fP zu der Vordergrundprozessgruppe gesandt und alle Prozesse in der aktuellen Sitzung verlieren ihr steuerndes Terminal. .SS "Prozessgruppen\- und \-sitzungskennung" .TP \fBTIOCGPGRP pid_t *\fP\fIargp\fP wenn erfolgreich, äquivalent zu \fI*argp = tcgetpgrp(dd)\fP .br Die Prozessgruppenkennung der Vordergrundprozessgruppe auf diesem Terminal ermitteln. .TP \fBTIOCSPGRP const pid_t *\fP\fIargp\fP äquivalent zu \fItcsetpgrp(dd, *argp)\fP .br Die Vordergrundprozessgruppenkennung dieses Terminals setzen. .TP \fBTIOCGSID pid_t *\fP\fIargp\fP Ermittelt die Sitzungskennung des angegebenen Terminals. Dies schlägt mit dem Fehler \fBENOTTY\fP fehl, falls das Terminal kein Master\-Pseudoterminal und nicht unser steuerndes Terminal ist. Merkwürdig. .SS "Exklusiver Modus" .TP \fBTIOCEXCL void\fP Setzt das Terminal in den exklusiven Modus. Es sind keine weiteren \fBopen\fP(2)\-Aktionen auf dem Terminal erlaubt. (Sie schlagen mit \fBEBUSY\fP fehl, außer der Prozess hat die Capability \fBCAP_SYS_ADMIN\fP.) .TP \fBTIOCGEXCL int *\fP\fIargp\fP (Seit Linux 3.8) Falls sich das Terminal momentan im exklusiven Modus befindet, wird ein von Null verschiedener Wert in den durch \fIargp\fP angezeigten Ort gelegt; andernfalls wird Null in \fI*argp\fP gelegt. .TP \fBTIOCNXCL void\fP exklusiven Modus deaktivieren .SS Verbindungsmodus .TP \fBTIOCGETD int *\fP\fIargp\fP Ermittelt den Verbindungsmodus des Terminals. .TP \fBTIOCSETD const int *\fP\fIargp\fP Setzt den Verbindungsmodus des Terminals. .SS Pseudoterminal\-Ioctls .TP \fBTIOCPKT const int *\fP\fIargp\fP Aktiviert (wenn *\fIargp\fP von Null verschieden ist) oder deaktiviert den Paketmodus. Kann nur auf die Master\-Seite eines Pseudoterminals angewandt werden (und liefert andernfalls \fBENOTTY\fP zurück). Im Paketmodus wird jeder nachfolgende Schreibvorgang ein Paket zurückliefern, das ein einzelnes, von Null verschiedenes Steuerbyte oder ein einzelnes Byte, das Zero (»\0«), gefolgt von den auf der Slave\-Seite des Pseudoterminals geschriebenen Daten, enthält. Falls das erste Byte nicht \fBTIOCPKT_DATA\fP (0) ist, ist es eine ODER\-Verknüpfung einer oder mehrere der folgenden Bits: .IP .nf TIOCPKT_FLUSHREAD Die Lesewarteschlange für das Terminal ist geleert. TIOCPKT_FLUSHWRITE Die Schreibwarteschlange für das Terminal ist geleert. TIOCPKT_STOP Ausgabe in das Terminal ist gestoppt. TIOCPKT_START Ausgabe in das Terminal ist neu gestartet. TIOCPKT_DOSTOP Die Start\- und Stoppzeichen sind \fB^S\fP/\fB^Q\fP. TIOCPKT_NOSTOP Die Start\- und Stoppzeichen sind nicht \fB^S\fP/\fB^Q\fP. .fi .IP Während dieser Modus verwandt wird, kann die Anwesenheit von Steuerstatusinformationen, die von der Master\-Seite gelesen werden sollen, für außergewöhnliche Bedingungen durch ein \fBselect\fP(2) oder ein \fBpoll\fP(2) für das Ereignis \fIPOLLPRI\fP erkannt werden. .IP Dieser Modus wird von \fBrlogin\fP(1) und \fBrlogind\fP(8) benutzt, um eine Anmeldung mit Ausgabe in der Ferne und lokaler \fB^S\fP/\fB^Q\fP\-Flusssteuerung zu implementieren. .TP \fBTIOCGPKT const int *\fP\fIargp\fP (Seit Linux 3.8) Liefert die aktuelle Paketmoduseinstellung in der Ganzzahl, auf die \fIargp\fP zeigt, zurück. .TP \fBTIOCSPTLCK int *\fP\fIargp\fP Setzt (falls \fI*argp\fP von Null verschieden ist) oder entfernt (falls \fI*argp\fP Null ist) das Pseudoterminal\-Slave\-Gerät. (Siehe auch \fBunlockpt\fP(3).) .TP \fBTIOCGPTLCK int *\fP\fIargp\fP (Seit Linux 3.8) Legt den aktuellen Sperrstatus des Pseudoterminal\-Slave\-Geräts in den durch \fIargp\fP verwiesenen Ort. .TP \fBTIOCGPTPEER int \fP\fIflags\fP .\" commit 54ebbfb1603415d9953c150535850d30609ef077 (Seit Linux 4.13) Ist ein Dateideskriptor in \fIdd\fP gegeben, der sich auf ein Pseudoterminal\-Master bezieht, wird dieser (mit den angegebenen \fBopen\fP(2)\-artigen \fISchalter\fP) geöffnet und ein neuer Datei\-Deskriptor, der sich auf ein Peer\-Pseudoterminal\-Slave\-Gerät bezieht, zurückgeliefert. Diese Aktion kann unabhängig davon durchgeführt werden, ob der Pfadname des Slave\-Gerätes über den Einhängenamensraum des aufrufenden Prozesses zugreifbar ist. .IP Sicherheitsbewusste Anwendungen, die mit Namensräumen interagieren, könnten diese Aktionen statt \fBopen\fP(2) mit von \fBptsname\fP(3) zurückgelieferten Pfadnamen und ähnliche Bibliotheksfunktionen, die unsichere APIs haben, benutzen. (Beispielsweise kann es in einigen Fällen bei der Verwendung von \fBptsname\fP(3) mit einem Pfadnamen, bei dem ein Devpts\-Dateisystem in einem anderen Einhängenamensraum eingehängt wurde, zur Verwirrung kommen.) .PP Die BSD\-Ioctls \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP und \fBTIOCREMOTE\fP wurden unter Linux nicht implementiert. .SS Modem\-Steuerung .TP \fBTIOCMGET int *\fP\fIargp\fP Den Status der Modem\-Bits ermitteln. .TP \fBTIOCMSET const int *\fP\fIargp\fP Den Status der Modem\-Bits setzen. .TP \fBTIOCMBIC const int *\fP\fIargp\fP Die angegebenen Modem\-Bits zurücksetzen. .TP \fBTIOCMBIS const int *\fP\fIargp\fP Die angegebenen Modem\-Bits setzen. .PP Die folgenden Bits werden von den obigen Ioctls verwandt: .PP .nf TIOCM_LE DSR (Datensatz bereit/Leitung aktiviert) TIOCM_DTR DTR (Datenterminal bereit) TIOCM_RTS RTS (Anfrage zum Senden) TIOCM_ST Sekundärer TXD (Senden) TIOCM_SR Sekundärer RXD (Empfangen) TIOCM_CTS CTS (bereit zum Senden) TIOCM_CAR DCD (Datenträgersignal erkannt) TIOCM_CD siehe TIOCM_CAR TIOCM_RNG RNG (Läuten) TIOCM_RI siehe TIOCM_RNG TIOCM_DSR DSR (Datensatz bereit) .fi .TP \fBTIOCMIWAIT int \fP\fIarg\fP Wartet auf die Änderung eines der 4 Modem\-Bits (DCD, RI, DSR, CTS). Die Bits von Interesse werden als Bitmaske in \fIarg\fP angegeben, indem jedes der Bit\-Werte (\fBTIOCM_RNG\fP, \fBTIOCM_DSR\fP, \fBTIOCM_CD\fP und \fBTIOCM_CTS\fP) mit ODER verknüpft wird. Der Aufrufende sollte \fBTIOCGICOUNT\fP verwenden, um zu schauen, welches Bit sich geändert hat. .TP \fBTIOCGICOUNT struct serial_icounter_struct *\fP\fIargp\fP Ermittelt die Anzahl der Interrupts der seriellen Eingabeleitung (DCD, RI, DSR, CTS). Die Anzahl wird in die durch \fIargp\fP verwiesene Struktur \fIserial_icounter_struct\fP geschrieben. .IP Hinweis: Sowohl 1\->0\- als auch 0\->1\-Übergänge werden gezählt, außer für RI, bei dem nur 0\->1\-Übergänge gezählt werden. .SS "Eine Leitung als lokal kennzeichnen" .TP \fBTIOCGSOFTCAR int *\fP\fIargp\fP (»Get software carrier flag«) Ermittelt den Status des Schalters CLOCAL im Feld c_cflag der Struktur \fItermios\fP. .TP \fBTIOCSSOFTCAR const int *\fP\fIargp\fP (»Set software carrier flag«) Setzt den Schalter CLOCAL in der Struktur \fItermios\fP, wenn *\fIargp\fP von Null verschieden ist, und bereinigt ihn andernfalls. .PP Falls der Schalter \fBCLOCAL\fP für eine Leitung ausgeschaltet ist, dann ist das Hardware\-Trägererkennung\- (DCD\-)Signal bedeutend, und ein \fBopen\fP(2) des entsprechenden Terminals wird blockieren, bis DCD festgestellt wurde, und die Leitung verhält sich so, als ob DCD immer festgestellt worden wäre. Der Software\-Träger\-Schalter wird normalerweise für lokale Geräte eingeschaltet und ist für Leitungen mit Modems ausgeschaltet. .SS Linux\-spezifisch Für den \fBTIOCLINUX\fP\-Ioctl, siehe \fBioctl_console\fP(2). .SS Kernel\-Fehlersuche \fB#include \fP .TP \fBTIOCTTYGSTRUCT struct tty_struct *\fP\fIargp\fP .\" commit b3506a09d15dc5aee6d4bb88d759b157016e1864 .\" Author: Andries E. Brouwer .\" Date: Tue Apr 1 04:42:46 2003 -0800 .\" .\" [PATCH] kill TIOCTTYGSTRUCT .\" .\" Only used for (dubious) debugging purposes, and exposes .\" internal kernel state. .\" .\" .SS Serial info .\" .BR "#include " .\" .PP .\" .TP .\" .BI "TIOCGSERIAL struct serial_struct *" argp .\" Get serial info. .\" .TP .\" .BI "TIOCSSERIAL const struct serial_struct *" argp .\" Set serial info. Die \fIdd\fP entsprechende \fItty_struct\fP ermitteln. Dieser Befehl wurde in Linux 2.5.67 entfernt. .SH RÜCKGABEWERT Der Systemaufruf \fBioctl\fP(2) liefert im Erfolgsfall 0 zurück. Bei einem Fehler wird \-1 zurückgegeben und \fIerrno\fP entsprechend gesetzt. .SH FEHLER .TP \fBEINVAL\fP Ungültiger Befehlsparameter. .TP \fBENOIOCTLCMD\fP Unbekannter Befehl. .TP \fBENOTTY\fP Ungeeigneter \fIdd\fP. .TP \fBEPERM\fP Unzureichende Berechtigung. .SH BEISPIEL Die Bedingungen von DTR auf dem seriellen Port prüfen. .PP .EX #include #include #include int main(void) { int fd, serial; fd = open("/dev/ttyS0", O_RDONLY); ioctl(fd, TIOCMGET, &serial); if (serial & TIOCM_DTR) puts("TIOCM_DTR ist gesetzt"); else puts("TIOCM_DTR ist nicht gesetzt"); close(fd); } .EE .SH "SIEHE AUCH" .\" .\" FIONBIO const int * .\" FIONCLEX void .\" FIOCLEX void .\" FIOASYNC const int * .\" from serial.c: .\" TIOCSERCONFIG void .\" TIOCSERGWILD int * .\" TIOCSERSWILD const int * .\" TIOCSERGSTRUCT struct async_struct * .\" TIOCSERGETLSR int * .\" TIOCSERGETMULTI struct serial_multiport_struct * .\" TIOCSERSETMULTI const struct serial_multiport_struct * .\" TIOCGSERIAL, TIOCSSERIAL (see above) \fBldattach\fP(1), \fBioctl\fP(2), \fBioctl_console\fP(2), \fBtermios\fP(3), \fBpty\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.04 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .