打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux之writev函数应用介绍

Linux之writev函数应用介绍

writev将多个数据存储在一起,将驻留在两个或更多的不连接的缓冲区中的数据一次写出去(wyq:应该是从内存的缓冲区直接写入到文件,即写入到磁盘中存储起来)。

UNIXWINSOCK提供了不同的实现方法UNIX系统下,使用writev,可以指定一系列的缓冲区,收集要写的数据,使可以安排数据保存在多个缓冲区中,然后同时写出去,从而避免出现Nagle和延迟ACK算法的相互影响。

readv/writev 函数及存储映射 I/O
原创aisxyz 最后发布于2018-01-19 00:57:02 阅读数 77  收藏
展开
readv 和 writev 函数可用于在一次函数调用中读、写多个非连续缓冲区,有时也称这两个函数为散布读(scatter read)和聚集写(gather write)。

#下面应该是c++的程序语言编程

#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);
                     /* 两个函数的返回值:已读或已写的字节数;若出错,返回 -1 */
struct iovec{
    void    *iov_base;    // starting address of buffer
    size_t   iov_len;     // size of buffer
};

这两个函数的第二个参数 iov 都是指向 iovec 结构数组的一个指针,该数组中的元素由 iovcnt 指定,其最大值受限于 IOV_MAX。readv 函数将读入(wyq:应该是从文件中读入,也就是从磁盘读入)的数据按 iov[0]、iov[1] 直至 iov[iovcnt-1] 的顺序散布到缓冲区中。它总是先填满一个缓冲区后再填写下一个。writev 函数则按照同样的顺序将缓冲区中的数据聚集输出到文件中。

存储映射 I/O 能将一个磁盘文件映射到存储空间中的一个缓冲区上,通过操作该缓冲区可以在不使用 read 和 write 的情况下间接地操作底层文件。为使用这种功能,应首先告诉内核将一个给定的文件映射到一个存储区域中。这可用 mmap 函数来实现。
————————————————

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
readv/writev
第十四章*高级I/O(七)--readv和writev函数
第一章 ACE简介
linux高性能服务器编程 (六) --高级I/O函数
分散聚合IO
Linux 中直接 I/O 机制的介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服