Scroll to navigation

IOCTL(2) Podręcznik programisty Linuksa IOCTL(2)

NAZWA

ioctl - sterowanie urządzeniem

SKŁADNIA

#include <sys/ioctl.h>

int ioctl(int fd, unsigned long request, ...);

OPIS

Wywołanie systemowe 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 fd 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 żądania ioctl() 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
fd nie jest prawidłowym deskryptorem pliku.
EFAULT
argp wskazuje na niedostępny obszar pamięci.
EINVAL
request lub argp są nieprawidłowe.
ENOTTY
fd nie jest związane z urządzeniem znakowym.
ENOTTY
Podane żądanie nie ma zastosowania dla obiektu, na który wskazuje deskryptor fd.

ZGODNE Z

Brak jednego standardu. Argumenty, zwracane wartości i semantyka ioctl() 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.

UWAGI

In order to use this call, one needs an open file descriptor. Often the open(2) call has unwanted side effects, that can be avoided under Linux by giving it the O_NONBLOCK flag.

ZOBACZ TAKŻE

execve(2), fcntl(2), ioctl_console(2), ioctl_fat(2), ioctl_ficlonerange(2), ioctl_fideduperange(2), ioctl_getfsmap(2), ioctl_iflags(2), ioctl_list(2), ioctl_ns(2), ioctl_tty(2), ioctl_userfaultfd(2), open(2), sd(4), tty(4)

O STRONIE

Angielska wersja tej strony pochodzi z wydania 5.04 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres manpages-pl-list@lists.sourceforge.net.

3 maja 2017 r. Linux