最近,我开发了一个简单的文件系统内核模块。
因此,我需要将我自己的 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/