iovec
基本介绍外文名:iovec
隶属:数学
定义:readv和wirtev操作相关的结构体
相关:readv和writev函式
一次函式简介I/O vector,与readv和wirtev操作相关的结构体 。readv和writev函式用于在一次函式调用中读、写多个非连续缓冲区 。有时也将这两个函式称为散布读(scatter read)和聚集写(gather write) 。所在头档案#include <sys/uio.h>/* Structure for scatter/gather I/O. */struct iovec{ void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */};成员解释成员iov_base指向一个缓冲区,这个缓冲区是存放readv所接收的数据或是writev将要传送的数据 。成员iov_len确定了接收的最大长度以及实际写入的长度 。readv和writevread和write的衍生函式,readv和writev可以在一个原子操作中读取或写入多个缓冲区 。所在头档案#include <sys/uio.h>readv和writev函式原型ssize_t readv(int fd, const struct iovec *iov, int iovcnt);ssize_t writev(int fd, const struct iovec *iov, int iovcnt);参数fd是要在其上进行读或是写的档案描述符;iov是读或写所用的I/O向量;iovcnt是要使用的向量元素个数 。返回值readv所读取的位元组数或writev所写入的位元组数;如果有错误发生,就会返回-1,错误代码存在errno中 。使用iovec和writev的例子【iovec】/** 将三个独立的字元串一次写入终端 。** */#include <sys/uio.h>int main(int argc,char **argv){ char part1[] = "This is iov"; char part2[] = " and "; char part3[] = " writev test"; struct iovec iov[3]; iov[0].iov_base = part1; iov[0].iov_len = strlen(part1); iov[1].iov_base = part2; iov[1].iov_len = strlen(part2); iov[2].iov_base = part3; iov[2].iov_len = strlen(part3); writev(1,iov,3); return 0;}