对于一项任务,我们必须使用C构建一个FUSE文件系统。我试图在我启动保险丝时挂载的挂载点目录中创建一个空文件,但它不起作用。如何在C中的FUSE中创建文件?
我试图把我自己实现的保险丝初始化函数内的以下内容:
FILE * fp = fopen("data.0", "w");
fclose(fp);
后,我这样做了,发生了什么事,当我试图导航到挂载点是,我得到了一个错误:Transport endpoint is not connected
。
当我尝试在调试模式下使用-d
标志运行FUSE时,终端和FUSE冻结,然后我甚至无法导航到包含挂载点的目录。
然后代替我下实现读取里面的以下内容:
mknod("data.0", 33206, 20); // a mode of 33206 means that it's a regular file with permissions 666
,然后当我看了看已经被称为mknod()
我的-1
(错误)返回值的结果和1
一个errno
(不允许操作)。
如果我再打电话给我读功能(通过打开一个文件),现在我仍然得到的-1
(错误)的返回值,但13
的1 errno
(拒绝)。请注意,目录中只有一个文件,它只在那里,因为我的readdir
函数使用该文件的名称填充缓冲区。目录中没有物理文件。
我可能接近这一切都是错误的。 如何创建一个空文件?
FUSE只是一个记忆的东西吗?
好吧也许这可能会更好问这个: 如果我想创建一个FUSE文件系统,它所做的只是在挂载点中创建一个物理空文件并让你访问该文件,那么我该如何做?
FUSE
这是由试图在 “/” 创建一个文件夹,授予每个人完全的权限,然后写入该文件夹解决绝对不限于仅在内存中。由于您收到了不允许的错误,因此我会验证您的用户空间文件系统之外的位置(路径)是否可写。 – 2015-04-06 02:30:15
哼好吧,那么至少这意味着我想要做的事情可以完成。我会尝试的。 – Steven 2015-04-06 02:32:41
谢谢@PaulDardeau,你是对的。 – Steven 2015-04-07 02:39:22