确定是否已在C中修改了打开的文件

ncc*_*ccc 8 c fopen file

有没有办法确定在POSIX下是否修改了打开的文件?更具体地说,我如何is_modified()在下面实施?

FILE *f = fopen("myfile", "r+");

// do various things with f

if (is_modified(f))
    foo(f);
Run Code Online (Sandbox Code Playgroud)

为了提供一些上下文,我在C中编写一个模块,每个文件都需要将其哈希存储在表中.该接口提供了包装器,fopen()并且fclose()在文件关闭时可以进行散列.我找到了几种方法来做到这一点,但是我没有像我希望的那样高效,干净或防错:

  • 计算为写入而打开的每个文件的哈希值.
  • fflush(f) 并检查时间戳是否已更改.
  • 各地提供包装fwrite(),fprintf()等等.

有什么建议?

小智 6

http://rosettacode.org/wiki/File_modification_time#POSIX_utime.28.29

您可以使用stat()函数检查上次修改的最新修改.

  • 我建议使用`fstat()`而不是`stat()`,因为你已经有了文件描述符. (2认同)