如何保存文件偏移量以便以后通过系统调用使用

时间:2019-05-04 20:09:45

标签: c linux file system-calls

我仅使用系统调用来管理C语言中的文件,并且正在创建一个方法,我们将其称为“ make_backup”,在其中备份文件并进行更改。 该文件由二进制结构条目构成,例如数据库。 因此,下次我调用“ make_backup”时,我需要在上一次完成备份时进行备份。

我这样做的逻辑是在第一个“ make_backup”调用中保存文件的大小,并在第二个调用中访问文件。但是我禁止将这个off_s写入另一个/相同文件的问题。

在第一个调用中,我尝试在文件末尾的for loop处5个字节的空位。在第二个调用中,将lseek与SEEK_HOLE结合使用以找到该offset + 5和ftruncate来移除该孔。但是fallocate w/ FALLOC_FL_COLLAPSE_RANGE偏移始终是EOF。

第二次尝试是使用某种形式的文件描述标记,例如SEEK_HOLE,但是没有运气。

fcntl(fd, F_SET_FILE_RW_HINT,offset)

0 个答案:

没有答案