有没有办法在linux中创建虚拟文件描述符?
我用以下方式打开了一个文件:
fp = fopen("some.txt","r"); 现在在这个文件中,第一个字节可以说40个字节是不必要的数据垃圾,所以我想删除它们.但我无法从该文件中删除该数据,修改或 所以我想创建另一个指向文件的虚拟FILE指针,当我将这个虚拟指针传递给执行以下操作的任何其他函数时: fseek ( dummy file pointer,SEEK_SET ); 然后它应该将文件指针设置在some.txt中的第40个位置. 但是该函数接受一个文件描述符,所以我需要传递一个文件描述符,它将文件视为文件中从未出现的前40个字节. 简而言之,虚拟描述符应该将文件视为那个40字节不在该文件中,并且所有定位操作应该相对于第40个字节计数为第1个字节. 解决方法
您的要求存在冲突,您无法使用C API执行此操作. SEEK_SET始终引用文件中的绝对位置,这意味着如果您希望该命令起作用,则必须修改该文件并删除垃圾. 在linux上,你可以编写一个FUSE驱动程序来呈现文件,就像它从第40个字节开始一样,但这是很多工作.我只是提到这个,因为它可以解决你创建的问题,但实际上这样做真的很傻. 最简单的事情当然是放弃你正在寻找的这个模拟层的想法,并编写可以处理额外的头垃圾的代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |