winapi有没有类似unix的readv/writev(分散读/会聚写)的功能调用?

keyizh 2015-02-09 05:52:38
在*nix平台上有readv/writev函数调用。

例如,需要读取一段内容,分别对不同的变量/对象进行赋值。要么一次读取一大块文件,再把缓存的内容拷贝到各个分散的变量里面,要么调用多次read函数。而readv解决了这个问题。
writev相反,一次可以把多个地址的内容,写入磁盘,避免了在"合并缓存"或者多次write调用之间二选一。

那么我的问题就是,windows api里面有没有类似的批处理的文件操作函数呢?
谢谢。
...全文
1120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
keyizh 2015-02-26
  • 打赏
  • 举报
回复
引用 2 楼 promaster 的回复:
http://www.codeforge.com/read/178401/readv.c__html 看看这个是否对你有所帮助。
看起来这个cygwin的实现也是很简单的啊:

readv(int handle, struct iovec *iov, int count)
{
 
  unsigned long r, t=0;
  while (count)
  {
 
    r = read(handle, iov->iov_base, iov->iov_len);
    if (r < 0)
      return r;
    t += r;
    iov++;
    count--;
   
}
grf9527 2015-02-11
  • 打赏
  • 举报
回复
据我所知。没有。 但是,可是,可但是。你的需求很容易满足啊。 windows的read和write提供的是原子操作。配合seek使用。 自己简单的封装一下,就是你要求的那种函数了。
招财猫_Martin 2015-02-11
  • 打赏
  • 举报
回复
http://www.codeforge.com/read/178401/readv.c__html 看看这个是否对你有所帮助。
keyizh 2015-02-10
  • 打赏
  • 举报
回复
自己顶起来一下!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧