-1偏移参数对uv_fs_read和uv_fs_write意味着什么?

时间:2018-04-18 10:58:25

标签: libuv

根据libuv/fs的官方文件:

  

int uv_fs_read(uv_loop_t * loop,uv_fs_t * req,uv_file file,const uv_buf_t bufs [],unsigned int nbufs,int64_t offset,uv_fs_cb cb)

     

相当于preadv(2)

但是在preadv的手册页中,负偏移参数存在EINVAL错误。

然而,uvbook的示例使用-1 {offset}参数到uv_fs_writeuv_fs_read,它可以作为程序的预期(cat a file)。

1 个答案:

答案 0 :(得分:0)

查看libuv版本1.20.1的代码,如果文件偏移量<0,则读/写将使用当前文件位置。

具体来说,unix根据是否有多个iovec值使用readreadv函数,并使用writewritev进行写入。

对于Windows,当偏移量小于零时,无需首先调用ReadFile或设置重叠的偏移量值即可调用SetFilePointerEx