相当于MSVC中的pread / pwrite?

时间:2010-10-04 04:03:27

标签: visual-studio-2010 visual-c++ posix

什么叫做最好在MSVC 10中模拟pread/pwrite

3 个答案:

答案 0 :(得分:3)

在C运行时库级别,请查看freadfwritefseek

在Win32 API级别,请查看ReadFileWriteFileSetFilePointer。 MSDN广泛覆盖file I/O API's

请注意,ReadFile和WriteFile都使用OVERLAPPED struct参数,该参数允许您指定文件偏移量。对于支持字节偏移的所有文件,即使打开同步(即非“重叠”)I / O,也会考虑偏移量。

根据您尝试解决的问题,file mapping可能是更好的设计选择。

答案 1 :(得分:1)

看起来您只需使用 lpOverlapped 参数ReadFile / WriteFile来传递指向OVERLAPPED结构的指针,并在偏移和偏移高

(注意:除非使用 FILE_FLAG_OVERLAPPED 打开句柄,否则实际上不会重叠IO。)

答案 2 :(得分:0)

Oren提供的答案似乎是正确的,但似乎不能满足需求。其实,我也在这里寻找答案,但找不到答案。所以,我将在这里进行一些更新。

如上所述,

在C运行时库级别上,有freadfwritefseek

在Win32 API级别上,我们可以有两个抽象级别。一个在较低级别上与文件描述符一起使用,另一个在较高级别上与Windows定义的数据结构(例如 File and Handle )一起使用。

如果希望使用文件和句柄,则有ReadFileWriteFileSetFilePointer。但是大多数时候,C ++开发人员更喜欢使用文件描述符。为此,您有_read_write_lseek