c - 如何使用 C 获取目录中最旧的文件?
问题描述
我正在实现日志机制,并且我想在达到定义的大小时根据在目录中创建的时间删除最旧的日志文件。
但是现在我坚持根据创建时间来获取最旧的文件。如何使用 C 获得它?
解决方案
在 C 中没有一种可移植的方式来获取文件的创建时间(或其修改时间)。
相反,您需要依赖一些不是严格可移植的东西 - 例如,使用目录条目中的文件名和stat()
POSIX 定义的函数,以获得可能有或没有struct timespec st_ctim;
字段的结构。
当然,有些文件系统根本没有创建时间;即使有一个,如果您将文件复制到其他地方(例如到远程存储),创建时间也会消失,所以它相对不可靠。
反而; 最好将创建时间和日期放入文件名中。如果您以正确的顺序执行此操作(“年、月、日、小时、分钟、秒” - 例如可能像“ mylog_2019-10-31_14-23-45.txt
”)并保持前导零(例如09
,月份而不是9
月份)然后按字母数字排序文件名列表还将按时间顺序对它们进行排序。
推荐阅读
- dart - 如何根据选择的选项卡更改样式?
- javascript - 有没有用 React hooks 和 Typescript 定义状态的“正确”方式?
- spell-checking - vespa 中是否有拼写检查器
- angular - 如何使用 ag-grid 导出到具有 Angular 6 的大数据(50,000 行)的 excel 功能(内存不足错误)?
- tensorflow - Keras multi_gpu_model 导致系统崩溃
- django - 自定义验证在 forms.py 中不起作用
- python - 为什么 Python 会复制维度长度相同的 NumPy 数组?
- python - 在合理的时间内比较两个视频
- c# - 远程服务器上的错误“底层连接已关闭:发送时发生意外错误”
- mysql - 替换从具有相同起始字符和结束字符的字符串中删除文本MYSQL