加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

有没有办法在linux中创建虚拟文件描述符?

发布时间:2020-12-13 19:45:33 所属栏目:Linux 来源:网络整理
导读:我用以下方式打开了一个文件: fp = fopen("some.txt","r"); 现在在这个文件中,第一个字节可以说40个字节是不必要的数据垃圾,所以我想删除它们.但我无法从该文件中删除该数据,修改或 在没有不必要的数据的情况下创建该文件的副本. 所以我想创建另一个指向文
我用以下方式打开了一个文件:
fp = fopen("some.txt","r");

现在在这个文件中,第一个字节可以说40个字节是不必要的数据垃圾,所以我想删除它们.但我无法从该文件中删除该数据,修改或
在没有不必要的数据的情况下创建该文件的副本.

所以我想创建另一个指向文件的虚拟FILE指针,当我将这个虚拟指针传递给执行以下操作的任何其他函数时:

fseek ( dummy file pointer,SEEK_SET );

然后它应该将文件指针设置在some.txt中的第40个位置.

但是该函数接受一个文件描述符,所以我需要传递一个文件描述符,它将文件视为文件中从未出现的前40个字节.

简而言之,虚拟描述符应该将文件视为那个40字节不在该文件中,并且所有定位操作应该相对于第40个字节计数为第1个字节.

解决方法

fseek ( dummy file pointer,SEEK_SET );

In short that dummy pointer should treat the file as there is no that 40 byte in that file and all position should be with respect to that 40th byte as counting as it is 1st byte.

您的要求存在冲突,您无法使用C API执行此操作.

SEEK_SET始终引用文件中的绝对位置,这意味着如果您希望该命令起作用,则必须修改该文件并删除垃圾.

在linux上,你可以编写一个FUSE驱动程序来呈现文件,就像它从第40个字节开始一样,但这是很多工作.我只是提到这个,因为它可以解决你创建的问题,但实际上这样做真的很傻.

最简单的事情当然是放弃你正在寻找的这个模拟层的想法,并编写可以处理额外的头垃圾的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读