c - 通过ioctl函数访问文件系统

标签 c linux module kernel ioctl

最近,我开发了一个简单的文件系统内核模块。 因此,我需要将我自己的 ioctl 函数 (.unlocked_ioctl) 分配给 file_operation 结构,以实现对我的文件系统模块的特定命令。例如,Ext4 文件系统有自己的 ioctl 功能。

然后,我使用 dd 命令创建了一个文件并挂载了它:

# mount -t myfs -o loop simple_file /mnt/

一切正常,但我如何通过用户空间程序使用 ioctl 访问此文件系统?

我尝试执行 ioctl(fd, MY_COMMAND_1, &my_struct_t);(其中 fd 是开发文件 /dev/loop[0 ..7]),但它返回给我 Invalid argument

最佳答案

如果您打开 /dev/loop0,您正在访问一个循环设备,因此您正在与循环驱动程序对话。

您为文件系统注册的 ioctl 处理程序适用于在挂载的文件系统上打开的文件。

fd = open("/mnt/something", O_RDWR);
ioctl(fd, MY_COMMAND_1, &my_struct_t);

关于c - 通过ioctl函数访问文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922531/

相关文章:

python bisect.insort(列表,值)

python - 类型错误 : Error when calling the metaclass bases module

c - 函数内绑定(bind)和函数外绑定(bind)的区别

编译我的项目时找不到 sqlite3

linux - 在 Linux 上查找所有特定大小的大文件,以清除不需要的空间

class - 将python类拆分为多个文件

c++ - 从文件中读取 double 值仅给出输出 s -0000.0000

c - Hackerrank 挑战超时

c# - Linux (Redhat) 上的 .NET Core 应用程序在用户主目录中创建神秘的 ".net"目录/文件

python - 使用 linux 应用程序和/或 Python 在视频文件中查找 GOP 参数值