我之前的Question是关于原始数据读写的,但是出现了一个新的问题,好像没完没了....
问题是:lseek()
或fseek()
等函数的参数都是4字节。如果我想移动超过 4G 的跨度,那是不可能的。我知道在Win32中,有一个函数SetPointer(...,Hign, Low,....)
,这个指针可以生成64字节的指针,这就是我想要的。
但是如果我想在 Linux 或 Unix 中创建一个应用程序(创建一个文件或直接写入 原始驱动器扇区),如何移动到超过 4G 的指针?
谢谢,等待您的回复...
最佳答案
lseek
的偏移量参数是off_t
类型。在 32 位编译环境中,此类型默认为 32 位有符号整数 - 但是,如果您使用在所有系统包含之前定义的此宏进行编译:
#define _FILE_OFFSET_BITS 64
...那么 off_t
将是一个 64 位有符号类型。
对于 fseek
,fseeko
函数是相同的,只是它使用 off_t
类型作为偏移量,这使得上述解决方案可以工作也有它。
关于linux - 关于文件查找位置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686434/