gpt4 book ai didi

c - C/linux 中的排序 glob

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:13 25 4
gpt4 key购买 nike

我需要在目录中找到最新创建/修改的文件。基本上是 ls -t *.bla 的作用。在 C 中,而不是 PHP,所以这个问题对我没有帮助 - glob() - sort by date


这是一个不应该做什么的例子( fork 一个进程并不便宜,它很懒惰):

char filename[100];
FILE *f = popen("ls -1t /*.blabla");
fscanf(f, "%s", filename);
pclose(f);

?

最佳答案

使用 opendir() 打开目录,将文件名 (readdir()) 读入数组,然后执行 qsort() 在该数组上使用 stat() 的回调来读取创建或修改日期,然后您又用它来告诉 qsort() 如何排序。不要忘记使用 closedir() 关闭目录(根据 larsmans 在下面的评论中提出的修改建议,这可能会更加有效)。

最后,排序完成后,获取第一个/最后一个数组条目(取决于您的排序方式),您就完成了。

如果可用,您也可以只使用 scandir() 一次完成所有这些(尽管您不会绕过必要的 stat() 调用,因为这些需要在qsort 对此解决方案的比较回调)。

PS:有人知道如何以原子方式执行此操作吗?

关于c - C/linux 中的排序 glob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8028524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com