ioctl − Gerät steuern
#include <sys/ioctl.h>
int ioctl(int d, int request, ...);
Die Funktion ioctl() manipuliert die zugrundeliegenden Geräteparameter von Spezialdateien. Im Besonderen können viele Betriebscharakteristika von zeichenorientierten Spezialdateien (z. B. Terminals) durch ioctl−Aufrufe gesteuert werden. Das Argument d muss ein geöffneter Dateideskriptor sein.
Das zweite Argument ist ein geräteabhängiger Aufrufkode. Das dritte Argument ist ein typloser Zeiger auf Speicher. Er ist traditionell char *argp (aus einer Zeit bevor void * gültiges C war) und wird für diese Diskussion so genannt.
In einem ioctl()−Aufruf ist kodiert, ob das Argument ein in− oder out−Parameter ist sowie die Größe des Argumentes argp in Byte. Makros und Definitionen, die in der Spezifikation eines ioctl()−Aufrufs benutzt werden, befinden sich in der Datei <sys/ioctl.h>.
Üblicherweise wird im Erfolgsfall Null zurückgegeben. Ein paar ioctl()−Aufrufe benutzen den Rückgabewert als Ausgabeparameter und geben bei Erfolg einen nicht negativen Wert zurück. Bei einem Fehler wird −1 zurückgegeben und errno entsprechend gesetzt.
EBADF |
d ist kein gültiger Deskriptor. |
||
EFAULT |
argp referenziert einen Speicherbereich, auf den nicht zugegriffen werden kann. |
||
EINVAL |
Aufruf oder argp ist nicht gültig. |
||
ENOTTY |
d ist nicht mit einem zeichenorientierten Spezialgerät verbunden. |
||
ENOTTY |
Der angegebene Aufruf passt nicht zur Art des Objekts, auf die sich der Deskriptor d bezieht. |
Kein einzelner Standard. Argumente, Rückgabewerte und Semantik von ioctl(2) variieren je nach angefragtem Gerätetreiber (der Aufruf wird als ein Allheilmittel für alle Operationen benutzt, die nicht sauber in das UNIX−Stream−E/A−Modell passen). Lesen Sie ioctl_list(2), um eine Liste von vielen der bekannten ioctl−Aufrufe zu erhalten. Die Funktion ioctl erschien in Version 7 von AT&T UNIX.
Um diesen Aufruf zu benutzen, wird ein offener Dateideskriptor benötigt. Der Aufruf von open(2) hat oft unerwünschte Nebeneffekte, die unter Linux durch Angabe des Schalters O_NONBLOCK vermieden werden können.
execve(2), fcntl(2), ioctl_list(2), open(2), sd(4), tty(4)
Diese Seite ist Teil der Veröffentlichung 3.52 des Projekts Linux−man−pages. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter http://www.kernel.org/doc/man−pages/.
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd AT gulu DOT net>, Martin Schulze <joey AT infodrom DOT org>, Michael Piefel <piefel AT debian DOT org> und Chris Leick <c DOT leick AT vollbio DOT de> 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 <debian-l10n-german AT lists DOT debian DOT org>.