繁体   English   中英

如何使用 C 获取目录中最旧的文件?

[英]How to get the oldest file in a directory using C?

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

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

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

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

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

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

您应该维护文件名的内部队列。 新创建的会不断添加到头部。 需要delete的时候,把tail guy删掉

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM