Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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_trywrite
     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  else-
	where 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  allow  any
	shorter  interval.)  Of course, this may still mean a 10-millisecond de-
	lay.

     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 contortions.

SEE ALSO
     io_wait(3), io_canwrite(3)

								  io_nonblock(3)

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+15.1.quarterly>

home | help