Linux内核模块 - 创建目录

时间:2017-01-25 11:41:44

标签: 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

2 个答案:

答案 0 :(得分:3)

我自己得到了它。 解决方案是:

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

注意路径末尾的“/”。

谢谢@all的尝试!

答案 1 :(得分:0)

这不会创建一个目录,但会打开像opendir这样的目录(目录应该存在)。