The writev() call writes data from a set of buffers on a socket using descriptor s.
The writev() call applies only to connected sockets.
#include <manifest.h>
#include <socket.h>
#include <bsdtypes.h>
#include <uio.h>
int writev(int s, struct iovec *iov, int iovcnt)
This call writes the sum of the iov_len bytes of data.
If buffer space is not available to hold the socket data to be transmitted and the socket is in blocking mode, writev() blocks the caller until additional buffer space becomes available. If the socket is in a nonblocking mode, writev() returns a -1 and sets errno to EWOULDBLOCK. For a description of how to set nonblocking mode, see fcntl() or ioctl().
For datagram sockets, this call sends the entire datagram, providing the datagram can fit into the TCP/IP buffers. Stream sockets act like streams of information with no boundaries separating data. For example, if an application wants to send 1000 bytes, each call to this function can send 1 byte, or 10 bytes, or the entire 1000 bytes. Therefore, applications using stream sockets should place this call in a loop, calling this function until all data has been sent.
connect(), fcntl(), getsockopt(), ioctl(), write(), read(), readv(), recv(), recvmsg(), recvfrom(), select(), selectex(), send(), sendmsg(), sendto(), setsockopt(), socket(), write()