I've used readv() and writev() quite a number of times. Compared to
read() and write() it has two adavantages: readv()/writev() are
atomic and you can save system calls, i.e. context switches, and
therefore improve performance.
Last time I used it was when writing/reading to a ring buffer. Say
you have a large buffer, that is nearly full, say 500 bytes left, and
want to read 4K. You could read 500 bytes to the current position in
the buffer and then another 3596 bytes to the beginning of the
buffer. Or call just a single readv().
urs