NAME
ioctl
- control device
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
int
ioctl(
int d
, unsigned long request
, void *argp
)
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.
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<.blm Pp
. >
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.
FIONWRITE
int
-
Get the number of bytes in the descriptor's send queue.
These bytes are data which has been written to the descriptor but
which are being held by the kernel for further processing.
The nature of the required processing depends on the underlying device.
For tty devices, these bytes are typically queued for delivery
to the tty hardware.
For TCP sockets, these bytes have not yet been acknowledged by the
other side of the connection.
For files, this operation always returns zero as files do not have
send queues.
FIONSPACE
int
-
Get the free space in the descriptor's send queue.
This value is the size of the send queue minus the number of bytes
being held in the queue.
Note: while this value represents the number of bytes that may be
added to the queue, other resource limitations may cause a write
not larger than the send queue's space to be blocked.
One such limitation would be a lack of network buffers for a write
to a network connection.
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
argp
is not valid.
- [
EFAULT
] -
argp
points outside the process's allocated address space.
SEE ALSO
mt(1),
execve(2),
fcntl(2),
intro(4),
tty(4)
HISTORY
An
ioctl(
)
function call appeared in
Version 7 AT&T UNIX
.