IOCTL(2)

NAZWA
ioctl - sterowanie urządzeniem

SKŁADNIA
#include <sys/ioctl.h>

int ioctl(int d, int request, ...);

OPIS
Uwaga! To tłumaczenie może być nieaktualne!

Funkcja ioctl manipuluje na podległych jej parametrach urządzeń, do których dostęp odbywa się poprzez pliki specjalne. W szczególności, za pomocą żądań ioctl można kontrolować wiele właściwości operacyjnych specjalnych plików znakowych (np. terminali). Argument d musi być otwartym deskryptorem pliku.

Drugi argument jest zależnym od urządzenia kodem polecenia. Trzeci argument jest pozbawionym typu wskaźnikiem do obszaru pamięci, tradycyjnie char *argp (pochodzi z okresu zanim void * stało się poprawne w C) i tak będzie nazywany w niniejszej dyskusji.

Ioctl request zawiera w sobie zakodowaną informację czy argument jest parametrem wejściowym czy wyjściowym oraz rozmiar argp tego argumentu w bajtach. Makra i definicje, używane do przekazywania request do ioctl, znajdują się w pliku <sys/ioctl.h>.

WARTOŚĆ ZWRACANA
Zazwyczaj, po pomyślnym zakończeniu zwracane jest zero. Niektóre ioctl-e używają zwracanej wartości jako parametru wyjściowego i zwracają wówczas pewną wartość nieujemną. Po błędzie zwracane jest -1 i odpowiednio ustawiane errno.

BŁĘDY

EBADF
    d nie jest prawidłowym deskryptorem.

EFAULT
    argp wskazuje na niedostępny obszar pamięci.

ENOTTY
    d nie jest związane z urządzeniem znakowym.

ENOTTY
    Podane żądanie nie ma zastosowania dla obiektu, na który wskazuje deskryptor d.

EINVAL
    request lub argp są nieprawidłowe.

CONFORMING TO
Brak jednego standardu. Argumenty, zwracane wartości i semantyka ioctl(2) różnią się w zależności od sterownika urządzenia, którego dotyczą (wywołanie jest używane jako uniwersalne dla operacji, które nie dają się ładnie dopasować do uniksowego modelu strumieni we/wy). W ioctl_list(2) znajduje się lista wielu znanych wywołań ioctl. Funkcja ioctl pojawiła się w wersji 7 AT&T UNIX.

ZOBACZ TAKŻE
execve(2), fcntl(2), ioctl_list(2), mt(4), sd(4), tty(4)

INFORMACJE O TŁUMACZENIU
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

    man --locale=C 2 ioctl

Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.