Ein minimales Arbeitsbeispiel:
Code: Select all
#include
#include
#include
#include
#include
int main(int argc, char** argv) {
FILE* file = NULL;
int fd = 0;
const char* filename = NULL;
struct stat fstat_FILE_sb, fstat_fd_sb, stat_sb;
if(argc < 2)
goto quit;
file = fopen(filename = argv[1], "rb");
fd = open(filename, O_RDONLY);
if(!file || !fd)
exit(1);
for(;;) {
if(fstat(fileno(file), &fstat_FILE_sb) != 0)
goto quit;
if(fstat(fd, &fstat_fd_sb) != 0)
goto quit;
if(stat(filename, &stat_sb) != 0)
goto quit;
printf("Comparing [%ld vs %ld vs %ld]\n",
fstat_FILE_sb.st_mtime,
fstat_fd_sb.st_mtime,
stat_sb.st_mtime);
sleep(1);
}
quit:
if(file)
fclose(file);
if(fd)
close(fd);
return 0;
}
Code: Select all
$ cc a.c -ansi
$ ./a.out a.c
Comparing [1768775974 vs 1768775974 vs 1768775974]
Comparing [1768775974 vs 1768775974 vs 1768775974]
Comparing [1768775974 vs 1768775974 vs 1768775974]
Mobile version