首页 > 代码库 > linux高级IO

linux高级IO

背景:

      write函数把内存中的数据写入文件描述符,通常这些数据是内存中的连续区域,如果我们应用程序需要把内存中多个非连续区域的数据写入文件描述符,那么需要多次调用write函数,如果文件描述符是socket,那么需要发送多个数据包。这种情况下,write函数效率比较低。

   writev将多个数据存储在一起,将驻留在两个或更多的不连接的缓冲区中的数据一次写出去。

writev函数声明:

#include <sys/uio.h>

ssize_t writev( int fd, const struct iovec *iov, int cnt );
iov是一组iovec结构的指针,iovec结构如下:
struct iovec {
char *iov_base; /*基本地址指针,指向缓冲区*/
size_t iov_len; /*指定缓冲区长度*/
};
readv函数将数据读入内存中多个不连续缓冲区.

linux高级IO