readv
readv将读入的数据按上述同样顺序散布读到缓冲区中。readv总是先填满一个缓冲区,然后再填写下一个。readv返回读到的总字节数。如果遇到文件结尾,已无数据可读,则返回0。 ssize_t readv(int filedes,const struct iovec *iov,int iovcnt); filedes 文件描述符 iov 指向iovec结构数组的一个指针。 iovcnt 数组元素的个数 struct iovec{ void *iov_base; size_t iov_len; }; *iov_base是数据指针 iov_len是数据量 若成功则返回已读、写的字节数,若出错则返回-1 #include #include #include #include int main(int argc,const char **argv) { int fd; struct iovec buffers; buffers.iov_len=3; buffers.iov_base=malloc(100); buffers.iov_len=2; buffers.iov_base=malloc(100); fd=open(argv,O_RDONLY); readv(fd,buffers,2); close(fd); char *str1=buffers.iov_base; char *str2=buffers.iov_base; printf("%s\n",str1); printf("%s\n",str2); return 0; } 将示例程序保存为a.c,编译运行 gcc a.c ./a.out a.c 显示: #in cl