.\" -*- 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 TTY_IOCTL 4 "15. März 2016" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG tty_ioctl \- Ioctls für Terminals und serielle Leitungen .SH ÜBERSICHT \fB#include \fP .sp \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\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. .LP 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(fd, argp)\fP .br Einstellungen der aktuellen seriellen Schnittstelle ermitteln .TP \fBTCSETS const struct termios *\fP\fIargp\fP äquivalent zu \fItcsetattr(fd, TCSANOW, argp)\fP .br Einstellungen der aktuellen seriellen Schnittstelle setzen .TP \fBTCSETSW const struct termios *\fP\fIargp\fP äquivalent zu \fItcsetattr(fd, 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(fd, TCSAFLUSH, argp)\fP .br Erlaubt dem Ausgabepuffer, leerzulaufen, verwirft wartende Eingaben und setzt die aktuellen Einstellungen serieller Ports. .LP 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). 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. .LP Das von diesen Ioctls verwandte Struct ist wie folgt definiert: .in +4n .nf struct winsize { unsigned short ws_row; unsigned short ws_col; unsigned short ws_xpixel; /* unbenutzt */ unsigned short ws_ypixel; /* unbenutzt */ }; .fi .in 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(fd, 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 kommt ohne Aktion zurück. Falls \fIarg\fP nicht Null ist, ist die Aktion undefiniert. (SVr4, UnixWare, Solaris, Linux behandeln \fItcsendbreak(fd,arg)\fP mit von Null verschiedenem \fIarg\fP wie \fItcdrain(fd)\fP. SunOS behandelt \fIarg\fP als Multiplikator und schickt einen Bitstrom der Länge \fIarg\fP\-mal so lange wie bei \fIarg\fP gleich Null. 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 den Versand von Null\-Bits. .TP \fBTIOCCBRK void\fP Schaltet Unterbrechungen aus, d.h. beendet den Versand von Null\-Bits. .SS Software\-Flußsteuerung .TP \fBTCXONC int \fP\fIarg\fP äquivalent zu \fItcflow(fd, arg)\fP .br siehe \fBtcflow\fP(3) für die Argumentwerte \fBTCOOFF\fP, \fBTCOON\fP, \fBTCIOFF\fP, \fBTCION\fP .SS "Buffer count and flushing" .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(fd, 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 übergebene Byte in die Eingabewarteschlange einfügen. .SS "Konsoleausgabe umleiten" .TP \fBTIOCCONS void\fP Lenkt die Ausgabe, die an \fI/dev/console\fP oder \fI/dev/tty0\fP gegangen wäre, an das übergebene Terminal um. Falls das ein Pseudoterminal\-Master war, sende es an den Slave. 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 \fIfd\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 übergebene 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 festgelegt werden. 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 das Capability \fBCAP_SYS_ADMIN\fP und ist \fIarg\fP 1, dann wird das Terminal gestolen und alle Prozesse, die es als steuerndes Terminal hatten, verlieren es. .TP \fBTIOCNOTTY void\fP Falls das übergebene 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 \-sitzungs\-ID" .TP \fBTIOCGPGRP pid_t *\fP\fIargp\fP wenn erfolgreich, äquivalent zu \fI*argp = tcgetpgrp(fd)\fP .br Die Prozessgruppen\-ID der Vordergrundprozessgruppe auf diesem Terminal ermitteln. .TP \fBTIOCSPGRP const pid_t *\fP\fIargp\fP äquivalent zu \fItcsetpgrp(fd, *argp)\fP .br Die Vordergrundprozessgruppen\-ID dieses Terminals setzen. .TP \fBTIOCGSID pid_t *\fP\fIargp\fP Ermittelt die Sitzungs\-ID des übergebenen Terminals. Dies schlägt mit \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 werden mit \fBEBUSY\fP fehlschlagen, außer der Prozess hat die Capability \fBCAP_SYS_ADMIN\fP.) .TP \fBTIOCGEXCL int *\fP\fIargp\fP 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 (seit Linux 3.8). .TP \fBTIOCNXCL void\fP exklusiven Modus deaktivieren .SS Leitungsdisziplin .TP \fBTIOCGETD int *\fP\fIargp\fP Ermittelt die Leitungsdisziplin des Terminals. .TP \fBTIOCSETD const int *\fP\fIargp\fP Setzt die Leitungsdisziplin des Terminals. .SS Pseudoterminal\-Ioctls .TP \fBTIOCPKT const int *\fP\fIargp\fP Aktiviert (wenn *\fIargp\fP von Null verschieden ist) oder deaktivert 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: .nf TIOCPKT_FLUSHREAD The read queue for the terminal is flushed. TIOCPKT_FLUSHWRITE The write queue for the terminal is flushed. TIOCPKT_STOP Output to the terminal is stopped. TIOCPKT_START Output to the terminal is restarted. TIOCPKT_DOSTOP The start and stop characters are \fB^S\fP/\fB^Q\fP. TIOCPKT_NOSTOP The start and stop characters are not \fB^S\fP/\fB^Q\fP. .fi 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) erkannt werden. 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\-Flußsteuerung zu implementieren. .TP \fBTIOGCPKT const int *\fP\fIargp\fP Liefert die aktuelle Paketmoduseinstellung in der Ganzzahl, auf die \fIargp\fP zeigt, zurück (seit Linux 3.8). .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 Legt den aktuellen Sperrstatus des Pseudoterminal\-Slave\-Geräts in den durch \fIargp\fP verwiesenen Ort (seit Linux 3.8). .PP Die BSD\-Ioctls \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIOCREMOTE\fP wurden unter Linux nicht implementiert. .SS Modem\-Steuerung .TP \fBTIOCMGET int *\fP\fIargp\fP Den Staus der Modem\-Bits ermitteln. .TP \fBTIOCMSET const int *\fP\fIargp\fP Den Staus 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. .LP Die folgenden Bits werden von den obigen Ioctls verwandt: .nf TIOCM_LE DSR (data set ready/line enable) TIOCM_DTR DTR (data terminal ready) TIOCM_RTS RTS (request to send) TIOCM_ST Secondary TXD (transmit) TIOCM_SR Secondary RXD (receive) TIOCM_CTS CTS (clear to send) TIOCM_CAR DCD (data carrier detect) TIOCM_CD see TIOCM_CAR TIOCM_RNG RNG (ring) TIOCM_RI see TIOCM_RNG TIOCM_DSR DSR (data set ready) .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 festgelegt, 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 Interrrupts der seriellen Eingabeleitung (DCD, RI, DSR, CTS). Die Anzahl wird in die durch \fIargp\fP verwiesene Struktur \fIserial_icounter_struct\fP geschrieben. 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") Get the status of the CLOCAL flag in the c_cflag field of the \fItermios\fP structure. .TP \fBTIOCSSOFTCAR const int *\fP\fIargp\fP ("Set software carrier flag") Set the CLOCAL flag in the \fItermios\fP structure when *\fIargp\fP is nonzero, and clear it otherwise. .LP If the \fBCLOCAL\fP flag for a line is off, the hardware carrier detect (DCD) signal is significant, and an \fBopen\fP(2) of the corresponding terminal will block until DCD is asserted, unless the \fBO_NONBLOCK\fP flag is given. If \fBCLOCAL\fP is set, the line behaves as if DCD is always asserted. The software carrier flag is usually turned on for local devices, and is off for lines with modems. .SS Linux\-spezifisch Für den \fBTIOCLINUX\fP\-Ioctl, siehe \fBconsole_ioctl\fP(4). .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 " .\" .sp .\" .TP .\" .BI "TIOCGSERIAL struct serial_struct *" argp .\" Get serial info. .\" .TP .\" .BI "TIOCSSERIAL const struct serial_struct *" argp .\" Set serial info. Die \fIfd\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 \fIfd\fP .TP \fBEPERM\fP Unzureichende Berechtigung. .SH BEISPIEL Die Bedingungen von DTR auf dem seriellen Port prüfen. .nf #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); } .fi .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), \fBtermios\fP(3), \fBconsole_ioctl\fP(4), \fBpty\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.09 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 GNU General Public License Version 3 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 .