当前位置: 首页 > news >正文

readv() writev()

readv() - 聚集输入(Scatter Input)

函数原型

#include <sys/uio.h>
ssize_t readv(int fd, const struct iovec *iov, int iovcnt);

参数

  • 参数1:文件描述符
  • 参数2:指向iovec结构数据指针
  • 参数3:iovec数组中的元素数量(通常限制为IOV_MAX,Linux默认为1024)
  • 返回值:
    • 成功:读取的总字节数
    • 失败:-1,并设置errno

实例

// 从文件读取数据到两个缓冲区
struct iovec iov[2];
char header[100], body[1024];iov[0].iov_base = header;
iov[0].iov_len = sizeof(header);
iov[1].iov_base = body;
iov[1].iov_len = sizeof(body);ssize_t n = readv(file_fd, iov, 2);

writev() - 分散输出(Gather Output)

函数原型

#include <sys/uio.h>
ssize_t writev(int fd, const struct iovec *iov, int iovcnt);

参数

  • 参数1:文件描述符
  • 参数2:指向iovec结构数据指针
  • 参数3:iovec数组中的元素数量(通常限制为IOV_MAX,Linux默认为1024)
  • 返回值:
    • 成功:写入的总字节数
    • 失败:-1,并设置errno

实例

// 发送HTTP响应头和文件内容
struct iovec iov[2];
char response_header[512];
char *file_content = mmap(...); iov[0].iov_base = response_header;
iov[0].iov_len = strlen(response_header);
iov[1].iov_base = file_content;
iov[1].iov_len = file_size;ssize_t n = writev(socket_fd, iov, 2);
http://www.sczhlp.com/news/903.html

相关文章:

  • Spring 中的 BeanFactory 和 ApplicationContext
  • Umi 约定式路由解析
  • SFUD库应用教程:串行SPI Flash驱动开发的最佳实践
  • 【刷题笔记】Peaks
  • spring security
  • required关键字和特性的区别
  • 详细介绍:理想不再“追星”华为。
  • C++小白修仙记_LeetCode刷题_1.两数之和
  • synchronized底层实现是什么 lock底层是什么 有什么区别
  • iOS 性能监控 苹果手机后台运行与能耗采样实战指南
  • pygame小游戏打飞机_1展示窗口
  • 个人版Navicat17 Lite版本安装教程(附安装包)2025最新版详细图文安装教程
  • Fluent许可状态监控工具
  • 链上充值监听与自动划转资金流程实现 - fox
  • 如何缓解Petya和WannaCrypt等快速网络攻击 | MSRC博客
  • 基于Amazon Translate的深度学习教材自动翻译系统
  • AI视频自动剪辑大师 v5.0 绿色版
  • 文件完整性校验工具 CHK 5.51 绿色中文版
  • 2025年7月26日,工信部人才交流中心 CUUG - PGCP/PGCM认证考试完成!
  • 2025.7.28暑假集训第一次普及组训练总结
  • 入职—员工体验的关键时刻,看AI Agent如何将体验值、效率值双双拉满
  • 寻疗智慧 IOT 数字健康服务平台
  • 铭芯科技共享轮椅租赁系统
  • 新视角问诊通
  • 寻医问药小程序系统
  • c# ACME client
  • 「闲聊文」准大三的我,思前想后还是不搞java了 - crhl
  • xxx.app 已损坏,无法打开,你应该将它移到废纸篓/打不开 xxx,因为它来自身份不明的开发者解决方法
  • OI 数学定理(提高级)
  • 智慧在线医疗 APP