我之前的问题是关于原始数据的读写,但是出现了一个新问题,似乎没有结局….
问题是:lseek()或fseek()等函数的参数都是4个字节.如果我想跨越4G,那是不可能的.我知道在Win32中,有一个函数SetPointer(…,Hign,Low,….),这个指针可以生成64个字节的指针,这就是我想要的.
但是,如果我想在Linux或Unix中创建一个应用程序(创建一个文件或直接写入
原始驱动器扇区),如何移动到4G指针?
Thanx,等待你的回复……
解决方法:
lseek的偏移参数是off_t类型.在32位编译环境中,此类型默认为32位有符号整数 – 但是,如果在所有系统包括之前使用此宏定义编译:
#define _FILE_OFFSET_BITS 64
…然后off_t将是64位签名类型.
对于fseek,fseeko函数是相同的,只是它使用off_t类型作为偏移量,这允许上面的解决方案也可以使用它.