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

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

概述我用以下方式打开了一个文件: fp = fopen("some.txt","r"); 现在在这个文件中,第一个字节可以说40个字节是不必要的数据垃圾,所以我想删除它们.但我无法从该文件中删除该数据,修改或 在没有不必要的数据的情况下创建该文件的副本. 所以我想创建另一个指向文件的虚拟FILE指针,当我将这个虚拟指针传递给执行以下 *** 作的任何其他函数时: fseek ( dummy file poin 我用以下方式打开了一个文件:
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个字节开始一样,但这是很多工作.我只是提到这个,因为它可以解决你创建的问题,但实际上这样做真的很傻.

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

总结

以上是内存溢出为你收集整理的有没有办法在linux中创建虚拟文件描述符?全部内容,希望文章能够帮你解决有没有办法在linux中创建虚拟文件描述符?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存