C语言如何获取文件创建时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何获取文件创建时间?相关的知识,希望对你有一定的参考价值。

参考技术A 分类: 电脑/网络 >> 操作系统/系统故障
问题描述:

C语言如何获取文件创建时间?

解析:

char buf[65];

struct stat;

stat("c:\\test.txt", & *** );

*** .st_ctime 就是文件的创建时间。你可以用localtime()

转换成立能够识别的时间。

struct tm* t=localtime( *** .st_ctime);

sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",

t->tm_year+1900, t->tm_mon+1, t->tm_mday,

t->tm_hour, t->tm_min, t->tm_sec);

在C中获取文件系统创建日期

我需要知道使用C的磁盘(在Linux机器上)上的文件系统的创建日期时间。我想避免使用shell命令,例如

tune2fs -l /dev/sdb2 | grep 'Filesystem created:' 

并制作一个解析器。

谢谢

答案

从C编码的程序(或任何能够调用C例程的语言)中,您将使用stat(2)系统调用(或者,使用最近的内核和一些文件系统,statx(2))来查询给定文件的创建时间(或目录)。当然,像ls(1)stat(1)这样的命令在内部使用stat(2)系统calll。

没有标准的,文件系统中立的方式来获得给定file system的创建时间。并不总是保留这些信息。我猜FAT文件系统,或distributed file systems,如NFS,不保留。

您可以在该文件系统的挂载点上使用stat(2)

statfs(2)系统调用检索一些文件系统信息,但不提供任何时间戳。

对于ext4文件系统,请参阅ext4(5)并使用proc(5)。你可以解析/proc/mounts和一些/proc/fs/ext4/*/目录。 /proc/中的伪文件可以是parsed quickly,通常不涉及物理磁盘IO。

您也可以在未安装的文件disk partition系统上使用ext2 / 3/4 ext[234]级别,使用e2fsprogs等库(或程序)。如果安装了该文件系统,则不应访问(甚至只读取)包含某些文件系统的磁盘分区。

(你的问题应该给出一些动力和背景)

以上是关于C语言如何获取文件创建时间?的主要内容,如果未能解决你的问题,请参考以下文章

Java如何获取文件的创建时间

C语言如何获取电脑实时时间

C语言如何获取本地时间,然后取时、分、秒的值?

C语言如何获取文件大小?fseek() + ftell()

C语言创建文件夹 文件夹名由用户键盘输入 如何实现

在C中获取文件系统创建日期