如何在linux上的目录中按名称对文件进行排序

时间:2017-05-20 07:29:12

标签: c linux sorting directory kernel

我正在学习linux内核编程,我想构建一个程序,用c编程语言对目录中的文件进行排序,就像按名称选项排列图标一样,欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

对文件进行排序意味着迭代文件

在内核空间中,您可以使用iterate_dir函数执行此操作。例如。可以通过以下方式执行列出文件:

// Callback for 'iterate_dir', prints entry.
static int printdir(struct dir_context *ctx, const char *name, int namlen,
       loff_t offset, u64 ino, unsigned int d_type) {
    printk("File: %.*s\n", namelen, name);
}

// usage
struct file* dir = ...; // opened directory
struct dir_context ctx = {.actor = &printdir};
iterate_dir(dir, &ctx);

对于文件排序,您可以逐个将它们存储到数组中,然后调用sort()函数。或者您可以将文件存储到有序容器(如二叉树)中,在这种情况下,不需要进行排序。