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

FreeBSD Manual Pages

  
 
  

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

NAME
     io_wait - wait for events

SYNTAX
     #include <libowfat/io.h>

     void io_wait();

DESCRIPTION
     io_wait()	checks	the descriptors that the program is interested in to see
     whether any of them are ready. If none of them are ready,	io_wait()  tries
     to  pause	until  one  of them is ready, so that it does not take time away
     from other programs running on the same computer.

     io_wait pays attention to timeouts: if a descriptor  reaches  its	timeout,
     and  the  program	is  interested	in  reading  or writing that descriptor,
     io_wait will return promptly.

     Under some circumstances, io_wait will return even  though  no  interesting
     descriptors  are ready. Do not assume that a descriptor is ready merely be-
     cause io_wait has returned.

     io_wait is not interrupted by the delivery of a signal. Programs  that  ex-
     pect interruption are unreliable: they will block if the same signal is de-
     livered  a moment before io_wait. The correct way to handle signals is with
     the self-pipe trick.

NOTE
     Depending on the underlying operating system primitive, there is  a  poten-
     tial race condition to be aware of. Some event notification mechanisms (for
     example,  kqueue on BSD and epoll on Linux) will return multiple events. If
     your application operates on pairs of  file  descriptors  (a  proxy  server
     maybe),  and  an  error on one descriptor can lead to closing the other de-
     scriptor, then an outstanding event on the other descriptor  can  still  be
     queued  for delivery to you. Be prepared to receive events for a descriptor
     that has already been closed.

SEE ALSO
     io_waituntil(3), io_check(3), io_wantread(3), io_wantwrite(3), io_fd(3)

								      io_wait(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=libowfat_io_wait&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help