NAZWA
ioctl - sterowanie urządzeniem
SKŁADNIA
#include <sys/ioctl.h>
int ioctl(int fd, unsigned long request, ...);
OPIS
The ioctl() system call manipulates the underlying device parameters of special files. In particular, many operating characteristics of character special files (e.g., terminals) may be controlled with ioctl() requests. The argument fd must be an open file descriptor.
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.
An ioctl() request has encoded in it whether the argument is an in parameter or out parameter, and the size of the argument argp in bytes. Macros and defines used in specifying an ioctl() request are located in the file <sys/ioctl.h>.
WARTOŚĆ ZWRACANA
Usually, on success zero is returned. A few ioctl() requests use the return value as an output parameter and return a nonnegative value on success. On error, -1 is returned, and errno is set appropriately.
BŁĘDY
EBADF |
fd nie jest prawidłowym deskryptorem. | ||
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.05 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 [AT] dione.pl> i Andrzej Krzysztofowicz <ankry [AT] green.pl>
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 [AT] lists.net>.