FreeBSD Manual Pages
io_nonblock(3) Library Functions Manual io_nonblock(3) NAME io_nonblock - switch to non-blocking I/O SYNTAX #include <libowfat/io.h> void io_nonblock(int64 fd); DESCRIPTION io_nonblock puts UNIX descriptor fd into ``non-blocking mode.'' Calling io_nonblock(fd) before io_fd(fd) makes io_tryread and io_trywrite faster and more efficient. Actually, current UNIX kernels do not support non-blocking descriptors; they support non-blocking open files. Furthermore, many programs will break if they encounter non-blocking mode. This means that you must not use io_nonblock for a descriptor inherited from another program. io_nonblock has no return value; it always succeeds. If d is not the number of a UNIX descriptor, io_nonblock has no effect. If io_fd is given a descriptor in blocking mode, io_tryread and io_try- write go through the following contortions to avoid blocking: 1 Stop if poll says that the descriptor is not ready. Otherwise there's a good chance, but not a guarantee: even if poll says the descriptor is ready, the descriptor might not be ready a moment later. (Furthermore, poll can fail on some systems.) 2 Catch SIGALRM. SIGALRM must not be blocked, and must not be used elsewhere in the program. 3 Set an interval timer so that any blocking call will be interrupted by SIGALRM within 10 milliseconds. (Current UNIX kernels do not al- low any shorter interval.) Of course, this may still mean a 10-mil- lisecond delay. If io_fd is given a descriptor in non-blocking mode (or a descriptor for a regular disk file), io_tryread and io_trywrite avoid these con- tortions. SEE ALSO io_wait(3), io_canwrite(3) io_nonblock(3)
NAME | SYNTAX | DESCRIPTION | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=libowfat_io_nonblock&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>