Vectored I/O
In computing, vectored I/O, also known as scatter/gather I/O, is a method of input and output by which a single procedure call sequentially reads data from multiple buffers and writes it to a single data stream, or reads data from a data stream and writes it to multiple buffers, as defined in a vector of buffers. "Scatter/gather" refers to the process of gathering data from, or scattering data into, the given set of buffers. Vectored I/O can operate synchronously or asynchronously. The main reasons for using vectored I/O are efficiency and  convenience. Vectored I/O has several potential uses: Standards bodies document the applicable functions codice_1 and codice_2 in POSIX 1003.1-2001 and the Single UNIX Specification version 2. The Windows API has analogous functions codice_3 and codice_4; however, unlike the POSIX functions, they require the alignment of each buffer on a memory page. Winsock provides separate codice_5 and codice_6 functions without this requirement. While working directly with a vector of buffers can be significantly harder than working with a single buffer, using higher-level APIs for working efficiently can mitigate the difficulties. Examples. The following example prints "Hello, Wikipedia Community !" to the standard output. Each word is saved into a single buffer and with only one call to codice_7, all buffers are printed to the standard output. int main(int argc, char *argv)