词条 | 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 <stdio.h> #include <fcntl.h> #include <unistd.h> #include <sys/uio.h> int main(int argc,const char **argv) { int fd; struct iovec buffers[2]; buffers[0].iov_len=3; buffers[0].iov_base=malloc(100); buffers[1].iov_len=2; buffers[1].iov_base=malloc(100); fd=open(argv[1],O_RDONLY); readv(fd,buffers,2); close(fd); char *str1=buffers[0].iov_base; char *str2=buffers[1].iov_base; printf("%s\",str1); printf("%s\",str2); return 0; } 将示例程序保存为a.c,编译运行 gcc a.c ./a.out a.c 显示: #in cl |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。