运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

如何在Linux中获取文件创建日期?

运维开发网 https://www.qedev.com 2020-07-17 11:15 出处:网络
我正在处理批量文件,这些文件在其生命的不同时间包含有关同一对象的信息,并且订购它们的唯一方法是创建日期.
我正在处理批量文件,这些文件在其生命的不同时间包含有关同一对象的信息,并且订购它们的唯一方法是创建日期.

我在用这个:

//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.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号