| IOCTL(2) | System Calls Manual | IOCTL(2) |
ioctl — control
device
Standard C Library (libc, -lc)
#include
<sys/ioctl.h>
int
ioctl(int
d, unsigned long
request, ...);
The
ioctl()
function 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 d must be an open file descriptor.
An
ioctl()
request has encoded in it whether the argument is an
“in”, “out”, or “inout” parameter,
and the size of the first variadic argument in bytes. Note that there can be
only one variadic argument but cannot be represented as a
void * argument in the prototype because this would
require a cast to pass integral types without warnings. Macros and defines
used in specifying an ioctl()
request are located in the header
<sys/ioctl.h>.
Some ioctls are applicable to any file descriptor. These include:
FIOCLEXfcntl()
F_SETFD FD_CLOEXEC and the
fcntl() form should be preferred).FIONCLEXfcntl() F_SETFD
0 and the fcntl() form
should be preferred).Some generic ioctls are not implemented for all types of file descriptors. These include:
FIONREAD
intFIONWRITE
intFIONSPACE
intFIONBIO
int-1 and set errno to
EAGAIN immediately when no data is available (This
is equivalent to
fcntl()
F_SETFL O_NONBLOCK and the
fcntl() form should be preferred).FIOASYNC
intfcntl() F_SETFL
O_ASYNC and the fcntl()
form should be preferred). In asynchronous mode, the process or process
group specified by FIOSETOWN will start receiving
SIGIO signals when data is available. The
SIGIO signal will be delivered when data is
available on the file descriptor.FIOSETOWN,
FIOGETOWN intSIGIO signals when data is available (This is
equivalent to fcntl()
F_SETOWN pid_t and the
fcntl form should be preferred).If an error has occurred, a value of -1 is returned and errno is set to indicate the error.
ioctl() will fail if:
EBADF]EFAULT]EINVAL]ENOTTY]An ioctl() function call appeared in
Version 7 AT&T UNIX.
| December 19, 2010 | NetBSD 11.0 |