#include <sys/ioctl.h> intioctl(int d, unsigned long request, ...);
DESCRIPTION
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.
The third argument is called
arg
and contains additional information needed by this device
to perform the requested function.
arg
is either an
int
or a pointer to a device-specific data structure, depending upon
the given
request.
An
ioctlrequest
has encoded in it whether the argument is an
in
parameter
or
out
parameter, and the size of the third argument
(arg)
in bytes.
Macros and defines used in specifying an ioctl
request
are located in the file
sys/ioctl.h .
GENERIC IOCTLS
Some ioctls are applicable to any file descriptor.
These include:
FIOCLEX
Set close-on-exec flag.
The file will be closed when
exec(3)
is invoked.
FIONCLEX
Clear close-on-exec flag.
The file will remain open across
exec(3).
Some generic ioctls are not implemented for all types of file
descriptors.
These include:
FIONREAD"int"
Get the number of bytes that are immediately available for reading.
FIONBIO"int"
Set non-blocking I/O mode if the argument is non-zero.
In non-blocking mode,
read(2)
or
write(2)
calls return \-1 and set
errno
to
EAGAIN
immediately when no data is available.
FIOASYNC"int"
Set asynchronous I/O mode if the argument is non-zero.
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 "int"
Set/get the process or the process group (if negative) that should receive
SIGIO
signals when data is available.
RETURN VALUES
If an error has occurred, a value of \-1 is returned and
errno
is set to indicate the error.
ERRORS
ioctl();
will fail if:
[EBADF]
d
is not a valid descriptor.
[ENOTTY]
d
is not associated with a character
special device.
[ENOTTY]
The specified request does not apply to the kind
of object that the descriptor
d
references.
[EINVAL]
request
or
arg
is not valid.
[EFAULT]
arg
points outside the process's allocated address space.