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

FreeBSD Manual Pages

  
 
  

home | help
io_tryread(3)		   Library Functions Manual		 io_tryread(3)

NAME
       io_tryread - read from a	descriptor without blocking

SYNTAX
       #include	<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  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  suc-
	  ceeds	in reading exactly len bytes.

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

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

       o  io_tryread returns -3, setting errno to something other than EAGAIN:
	  No  bytes  were read,	because	the read attempt encountered a persis-
	  tent 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)

NAME | SYNTAX | DESCRIPTION | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=libowfat_io_tryread&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help