Linux c 编程问题请教,使用 readv/writev 读写 iovec 数组,如何循环读取或写入直到全部字节传输完毕?

2022-09-17 09:31:47 +08:00
 qemu32

https://www.oreilly.com/library/view/linux-system-programming/0596009585/ch04.html

这个教程的示例代码没有考虑 readv/writev 没有一次性读写 iovec 数组全部内容的情况,因为 readv/writev 和 read/write 一样可能调用一次只读写了一部分数据,read/write 可以使用一个简单的 while 循环来保证读取或写入直到全部完成,readv/writev 的情况我不知道代码该怎么写,比如如何计算整个 iovec 数组所有元素加起来的总大以及 while 循环该怎么写。

1227 次点击
所在节点    Linux
3 条回复
heiher
2022-09-17 09:51:28 +08:00
链接的示例是 Blocking I/O 吧,Non-blocking I/O 用 vector I/O 方式太麻烦了
qemu32
2022-09-17 09:54:08 +08:00
@heiher 感谢回复,我用的是 Blocking I/O
qemu32
2022-09-17 09:57:00 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/880735

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX