首页 > 解决方案 > 如何使用 C 获取目录中最旧的文件?

问题描述

我正在实现日志机制,并且我想在达到定义的大小时根据在目录中创建的时间删除最旧的日志文件。

但是现在我坚持根据创建时间来获取最旧的文件。如何使用 C 获得它?

标签: clinux

解决方案


在 C 中没有一种可移植的方式来获取文件的创建时间(或其修改时间)。

相反,您需要依赖一些不是严格可移植的东西 - 例如,使用目录条目中的文件名和stat()POSIX 定义的函数,以获得可能有或没有struct timespec st_ctim;字段的结构。

当然,有些文件系统根本没有创建时间;即使有一个,如果您将文件复制到其他地方(例如到远程存储),创建时间也会消失,所以它相对不可靠。

反而; 最好将创建时间和日期放入文件名中。如果您以正确的顺序执行此操作(“年、月、日、小时、分钟、秒” - 例如可能像“ mylog_2019-10-31_14-23-45.txt”)并保持前导零(例如09,月份而不是9月份)然后按字母数字排序文件名列表还将按时间顺序对它们进行排序。


推荐阅读