c - Linux 内核模块 - 创建目录

标签 c linux linux-kernel kernel-module

我在 Linux 内核模块中创建目录时遇到问题。

我想要什么:在内核模块中创建一个目录。

这是我的实际代码:

struct file *fp = (struct file *) NULL;
fp = filp_open("/home/testdir", O_DIRECTORY|O_CREAT, S_IRUSR);

但它创建一个文件而不是目录。

我尝试使用与上面相同的代码而不使用标志“O_DIRECTORY”:

struct file *fp = (struct file *) NULL;
fp = filp_open("/home/testdir", O_CREAT, S_IRUSR);

结果与之前的结果类似。

我不明白这种行为。我做错了什么?

编辑1: 我正在 Raspberry PI、Raspbian 上编码,内核版本:4.4.43-v7

最佳答案

我自己拿到的。 解决办法是:

struct file *fp = (struct file *) NULL;
fp = filp_open("/home/testdir/", O_DIRECTORY|O_CREAT, S_IRUSR);

注意路径末尾的“/”。

感谢@all的尝试!

关于c - Linux 内核模块 - 创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850722/

相关文章:

c - 带参数的 Termcap

c - 就 cpu 而言,coSTLy 如何成为低争用互斥体

c - 如何在linux内核中实现新的调度方案

Linux内核中断处理程序互斥保护?

c - makefile 将 fortran 库链接到 C 程序

c - 在 Release模式下延迟加载dll

c++ - 编译器会优化返回具有固定大小数组的结构的函数吗?

linux - 在 LAMP 中创建新文件或目录?

linux - 在 bash 中打印字符串模式和新行之间的文本

c - 插入 mymodule 后,我没有看到/sys/module/mymodule/parameters 文件夹被创建