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

前端之家收集整理的这篇文章主要介绍了有没有办法在linux中创建虚拟文件描述符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用以下方式打开了一个文件
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相关文章