Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过ioctl函数访问文件系统_C_Linux_Module_Kernel_Ioctl - Fatal编程技术网

通过ioctl函数访问文件系统

通过ioctl函数访问文件系统,c,linux,module,kernel,ioctl,C,Linux,Module,Kernel,Ioctl,最近,我开发了一个简单的文件系统内核模块。 因此,我需要将自己的ioctl函数(.unlocked\u ioctl)分配给文件操作结构,以实现对文件系统模块的特定命令。例如,Ext4文件系统有自己的ioctl函数 然后,我使用dd命令创建了一个文件并挂载了它: # mount -t myfs -o loop simple_file /mnt/ 一切正常,但如何使用ioctl和用户空间程序访问此文件系统 我尝试执行ioctl(fd、我的命令1和我的结构)(其中fd是dev文件/dev/loop[

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

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

# mount -t myfs -o loop simple_file /mnt/
一切正常,但如何使用ioctl和用户空间程序访问此文件系统


我尝试执行
ioctl(fd、我的命令1和我的结构)
(其中
fd
是dev文件
/dev/loop[0..7]
的文件描述符),但它返回我
无效参数
,如果打开
/dev/loop0
,则您正在访问一个循环设备,因此您正在与循环驱动程序对话

为文件系统注册的ioctl处理程序适用于在已装入的文件系统上打开的文件

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

谢谢@Gilles。我这样做了,但它给我返回了设备的
不合适的ioctl
。因此,我注意到我只对目录使用了
file\u操作,我改为
fd=open(“/mnt/something/”,O_RDWR)并且代码有效。=)