Provided by: libowfat-dev_0.32-4.1build1_amd64 bug

NAME

       io_tryread - read from a descriptor without blocking

SYNTAX

       #include <libowfat/io.h>

       int io_tryread(int64 fd,char* buf,int64 len);

DESCRIPTION

       io_tryread  tries  to  read len bytes of data from descriptor fd into buf[0], buf[1], ...,
       buf[len-1]. (The effects are undefined if len is 0 or smaller.) There are several possible
       results:

       •  o_tryread  returns an integer between 1 and len: This number of bytes was available for
          immediate reading; the bytes were read into the beginning of buf. Note that this number
          can  be,  and  often  is,  smaller than len; you must not assume that io_tryread always
          succeeds in reading exactly len bytes.

       •  io_tryread returns 0: No bytes were read, because the descriptor is at end of file. For
          example,  this  descriptor  has  reached the end of a disk file, or is reading an empty
          pipe that has been closed by all writers.

       •  io_tryread returns -1, setting errno  to  EAGAIN:  No  bytes  were  read,  because  the
          descriptor  is  not  ready.  For  example, the descriptor is reading an empty pipe that
          could still be written to.

       •  io_tryread returns -3, setting errno to something other  than  EAGAIN:  No  bytes  were
          read,  because  the read attempt encountered a persistent error, such as a serious disk
          failure (EIO), an unreachable network (ENETUNREACH), or an  invalid  descriptor  number
          (EBADF).

       io_tryread  does  not  pause  waiting  for a descriptor that is not ready.  If you want to
       pause, use io_waitread or io_wait.

       You can make io_tryread faster and more efficient by making the socket  non-blocking  with
       io_nonblock().

SEE ALSO

       io_nonblock(3), io_waitread(3), io_tryreadtimeout(3)

                                                                                    io_tryread(3)