Next: iklib io binary, Previous: iklib io codecs, Up: iklib io [Index]
R6RS defines the input operations on Scheme ports as properly blocking when no input data is available; this is fine when the underlying device is configured in blocking mode. Vicare extends the Scheme input/output ports to support underlying devices configured in non–blocking mode; such ports are typically the ones whose underlying device is a POSIX file or socket descriptor.
The implementation of Scheme ports read from the underlying device
through a function read!; if the device is configured in
non–blocking mode: read! might raise an exception with condition
object type &i/o-eagain, which means: there are no available
bytes, but this is not the end–of–file. This scenario corresponds to
the case in which a POSIX function fails with errno set to
EAGAIN or EWOULDBLOCK.
The functions extended by Vicare behave as described in this section. The extended behaviour is disabled when running with the command line --strict-r6rs: in this case the port will block as mandated by R6RS.
| • iklib io non-blocking object: | The would–block object. | |
| • iklib io non-blocking mode: | Ports and non-blocking mode. | |
| • iklib io non-blocking binary: | Extended binary input functions. | |
| • iklib io non-blocking textual: | Extended textual input functions. |