我正在处理一批文件,这些文件包含有关同一对象生命周期不同时间的信息,而订购它们的唯一方法是按创建日期排序。我正在使用这个:
//char* buffer has the name of file struct stat buf; FILE *tf; tf = fopen(buffer,"r"); //check handle fstat(tf, &buf); fclose(tf); pMyObj->lastchanged=buf.st_mtime;
但这似乎不起作用。我究竟做错了什么?在Linux下还有其他更可靠/简单的方法来获取文件创建日期吗?
fstat适用于文件描述符,而不适用于FILE结构。最简单的版本:
#include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #ifdef HAVE_ST_BIRTHTIME #define birthtime(x) x.st_birthtime #else #define birthtime(x) x.st_ctime #endif int main(int argc, char *argv[]) { struct stat st; size_t i; for( i=1; i<argc; i++ ) { if( stat(argv[i], &st) != 0 ) perror(argv[i]); printf("%i\n", birthtime(st)); } return 0; }
您需要通过检查sys / stat.h或使用某种autoconf构造来确定系统的stat结构中是否具有st_birthtime。