新闻资讯
看你所看,想你所想

iovec

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和writev

read和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的例子

/** 将三个独立的字元串一次写入终端。** */#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;}

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com