zoukankan      html  css  js  c++  java
  • c iovec结构体 readv writev

    1
      /*
    结构体名:iovec
    名称含义:I/O向量
    所在头文件:#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和wirtev是read和write的衍生函数(v是vector的意思),readv和wirtev可以再一个

    原子操作中读取或写入多个缓冲区。

    头文件:#include <sys/uio.h>

    原型:

    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中。

    例子:

    /*
    * 将三个独立的字符串一次写入终端。
    *
    * */

    #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;
    }

    */
  • 相关阅读:
    导航属性
    提笔忘字
    JavaScript学习总结(一)——闭包、对象、函数
    CSS3新特性(阴影、动画、渐变)
    图片轮播(也可以通过点击下标播放对应的图片)
    CSS3与页面布局学习总结——多种页面布局
    多种居中方法
    二级菜单
    无间隙轮播图片
    模块和程序处理
  • 原文地址:https://www.cnblogs.com/helloweworld/p/2685542.html
Copyright © 2011-2022 走看看