Linux内核模块,可以列出给定路径中的文件和文件夹

时间:2015-09-04 17:28:44

标签: linux file linux-kernel filesystems linux-device-driver

我想知道是否可以在Linux内核中列出给定文件夹中的文件和文件夹。我打赌有办法。

我已经在网上搜索了几次,但仍然无法做到。

谢谢!

1 个答案:

答案 0 :(得分:0)

反应你的评论:你的问题不是文件阅读,而是获取目录的条目。关于你的最后一句话:是的,每个文件系统都实现了readdir()函数,所以它与文件系统无关。

在我看来,您需要执行以下步骤:

  1. 研究,如何编写内核模块。网上有很多教程,包括带有好评的例子的分步教程。

  2. 编写一个简单的模块,printk() - 在其初始化函数中有一些简单的文本。

  3. 研究,如何从内核模块调用系统调用。它可能不是那么简单,比如来自用户空间,但几乎肯定是可能的。

  4. 通过模块参数中目录路径的最简单方法。 Linux内核模块可以有多个参数,其处理非常自动化(实际上,您可以直接将参数名称绑定到模块中的静态变量)。

  5. 在您的模块可以调用系统调用并输入之后,您现在可以通过opendir()调用在其init函数中打开此目录。然后阅读其内容(请参阅readdir()),最后使用printk()输出结果。

  6. 可能存在一些障碍,例如,你可能无法使用模块初始化函数中的系统调用,或类似的,但它们都不会真的很难。