当前位置: 首页 > 面试题库 >

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

鞠鸿雪
2023-03-14
问题内容

我正在处理一批文件,这些文件包含有关同一对象生命周期不同时间的信息,而订购它们的唯一方法是按创建日期排序。我正在使用这个:

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



 类似资料:
  • 问题内容: 我正在阅读包含大量文件的文件夹。 如何获取文件的创建日期。我看不到任何直接功能来获取它。 有和。 如果文件没有被修改,会发生什么? 问题答案: 使用filectime。对于Windows,它将返回 创建 时间,而对于Unix,则将获得最好的 更改 时间,因为在Unix上没有创建时间(在大多数文件系统中)。 还要注意,在某些Unix文本中,文件的ctime称为文件的创建时间。错了 在大多

  • 问题内容: 我在Debian GNU / Linux 6.0上使用Bash。是否可以获取文件创建日期/时间?不是修改日期/时间。 和两个只给出修改时间。 问题答案: 不幸的是,您的搜寻通常无法进行,因为POSIX标准定义了每个文件仅存储3个不同的时间值(请参见基本定义部分4.8文件时间更新)。 每个文件具有三个不同的关联时间戳:上次数据访问的时间,上次数据修改的时间以及文件状态上次更改的时间。这些

  • 问题内容: 我有一个脚本,该脚本需要根据文件创建和修改日期执行一些操作,但必须在Linux和Windows上运行。 在Python中获取文件创建和修改日期/时间的最佳跨平台方法是什么? 问题答案: 以跨平台的方式获取某种修改日期很容易-只需调用,你就会获得Unix时间戳,该时间戳是文件的最后修改时间。 另一方面,获取文件的创建日期是不固定的,并且依赖于平台,甚至在三大操作系统之间也有所不同: 在上

  • 问题内容: 在Linux终端中创建文件的最简单方法是什么? 问题答案: 根据您希望文件包含的内容: 对于一个空文件 用于包含某些命令输出的文件。 或(或) 它可以打开现有文件进行编辑,也可以创建并打开一个空文件以输入(如果不存在)

  • 问题内容: 出于测试目的,我必须生成一定大小的文件(以测试上传限制)。 在Linux上创建一定大小的文件的命令是什么? 问题答案: 测试文件的大小在哪里(以字节为单位)

  • 问题内容: 如何通过Python更改Windows文件的文件创建日期? 问题答案: the牛为胜利而刮胡子。