Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在linux上按名称对目录中的文件进行排序_C_Linux_Sorting_Directory_Kernel - Fatal编程技术网

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

C 如何在linux上按名称对目录中的文件进行排序,c,linux,sorting,directory,kernel,C,Linux,Sorting,Directory,Kernel,我正在学习linux内核编程,我想构建一个程序,用c编程语言对目录中的文件进行排序,就像按名称排列图标选项一样,欢迎任何建议。对文件排序意味着对文件进行迭代。 在内核空间中,您可以使用iterate\u dir函数来实现这一点。例如,列表文件可以通过以下方式执行: // Callback for 'iterate_dir', prints entry. static int printdir(struct dir_context *ctx, const char *name, int namle

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

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

在内核空间中,您可以使用
iterate\u 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()
函数。或者,您可以将文件存储到有序容器(如二叉树)中,在这种情况下,以后不需要进行排序。

您是否已经构建了一个程序,可以读取目录中的文件名并将其存储在内存中?如果不是的话,你的问题应该暂时略去分类。这个想法很有趣。你的问题是什么?你看,这是一个帮助解决问题的网站。这不是一个“我们为你的下一个项目创造想法”的社区。