Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

io_canwrite(3) [debian man page]

io_canwrite(3)						     Library Functions Manual						    io_canwrite(3)

NAME
io_canwrite - return a file descriptor that can be written to SYNTAX
#include <io.h> int64 io_canwrite(); DESCRIPTION
io_canwrite returns the next file descriptor that can be written to. You have to have used io_wantwrite() on the file descriptor earlier, and you have to have called io_wait() or io_waituntil(). These functions then keep an internal data structure on which descriptors were reported writable by the operating system. Please note that there is no guarantee that you can still write data without blocking to that descriptor, just that you could when io_wait() or io_waituntil() were called. Another process could have written something before you. Look at the result from io_trywrite(). If there are no more descriptors that you can write to without blocking, io_canwrite will return -1. In this case you should call io_wait() or io_waituntil() again. You should only use io_trywrite(3), io_sendfile(3) or iob_send(3) to write to the file, not plain write(2). If you use write(2) and get EAGAIN, call io_eagain(3). SEE ALSO
io_wait(3), io_canwrite(3) io_canwrite(3)

Check Out this Related Man Page

iob_send(3)						     Library Functions Manual						       iob_send(3)

NAME
iob_send - send I/O batch SYNTAX
#include <iob.h> int64 iob_send(int64 s,io_batch* b); DESCRIPTION
iob_send sends the (rest of) b over the socket s. iob_send returns the number of bytes written, 0 if there were no more bytes to be written in the batch, -1 for EAGAIN, or -3 for a perma- nent error (for example "connection reset by peer"). The normal usage pattern is using io_wait to know when a descriptor is writable, and then calling iob_send until it returns 0, -1 or -3. If it returns 0, terminate the loop (everything was written OK). If it returns -1, call io_wait again. If it returned -3, signal an error and close the socket. The benefit of the I/O batch API is that it exploits platform specific APIs like FreeBSD's sendfile. The file contents will always be sent in a way that allows the operating systems to perform zero copy TCP, and the buffers will always be sent using as few syscalls as possible and avoiding unnecessary copying (using writev). SEE ALSO
iob_reset(3), iob_send(3), iob_addbuf(3), iob_adds_free(3), iob_addfile(3), iob_prefetch(3) iob_send(3)
Man Page