linux - 关于文件查找位置的问题

标签 linux winapi seek fseek

我之前的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 位有符号类型。

对于 fseekfseeko 函数是相同的,只是它使用 off_t 类型作为偏移量,这使得上述解决方案可以工作也有它。

关于linux - 关于文件查找位置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686434/

相关文章:

linux - 针对交叉编译器问题编译 GMP

linux - 如何将用户输入解析为 bash 脚本

python - 关于在 gzip 文件上使用 seek

c - Windows 中的多线程 - 创建函数指针数组时出错

c++ - 检测在编辑控件中输入

C++/seek - 哪种文件查找顺序更快?

c++ - 如何恢复将数据附加到特定位置的文件? (std::ostream, streampos, tellp/seekp)

linux - 安排许多 cron 作业每 5 分钟运行一次,但不是同时运行

linux setgid()权限错误

c++ - 如何在 Aero 玻璃窗上绘制不透明图像?