GNU.WIKI: The GNU/Linux Knowledge Base

  [HOME] [PHP Manual] [HowTo] [ABS] [MAN1] [MAN2] [MAN3] [MAN4] [MAN5] [MAN6] [MAN7] [MAN8] [MAN9]

  [0-9] [Aa] [Bb] [Cc] [Dd] [Ee] [Ff] [Gg] [Hh] [Ii] [Jj] [Kk] [Ll] [Mm] [Nn] [Oo] [Pp] [Qq] [Rr] [Ss] [Tt] [Uu] [Vv] [Ww] [Xx] [Yy] [Zz]


NAME

       io_nonblock - switch to non-blocking I/O

SYNTAX

       #include <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
          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
          allow any shorter interval.)  Of  course,  this  may  still  mean  a
          10-millisecond 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
       contortions.

SEE ALSO

       io_wait(3), io_canwrite(3)

                                                                io_nonblock(3)



  All copyrights belong to their respective owners. Other content (c) 2014-2018, GNU.WIKI. Please report site errors to webmaster@gnu.wiki.
Page load time: 0.185 seconds. Last modified: November 04 2018 12:49:43.