我正在使用 FUSE 开发用户级文件系统,我的要求是:
- 当我对
文件 A
发出读取指令时,我想叠加另一个文件(例如文件 B
)的内容并呈现文件 B
作为文件 A
的内容。 - 我已经通过缓冲区修改实现了这一目标,方法是将其捕获在我的熔丝读取中并内部读取
文件 B
并将缓冲区内容复制到传入的文件 A
缓冲区并且没有对文件 A
进行任何实际的读取调用。因此,文件 A
调用返回时,文件 B
的内容已复制到其缓冲区中。 - 此外,与
文件 B
相比,文件 A
的大小更小。
使用调试器检查时,文件 A
缓冲区内容看起来不错(包含整个文件 B
内容),但是当它显示时(例如使用 Vi
) 对于文件 A
,我只能看到与文件 A
大小相同的字符,但与 文件 B
一样size 越大,即使返回到文件 A 的缓冲区(复制的文件 B 数据)有更多要显示的数据,也永远不会显示整个数据。这是因为文件 A
的大小较小,并且当达到文件 A
的文件大小的字符数时,显示终止。
我尝试查看struct stat
,但它是一个只读的东西,它显示了文件A
的大小,它比文件B要小
.
struct stat stat1;
stat(fileA, &stat1);
所以,我的问题是如何动态伪造/更改File A
的大小,以便它能够显示整个数据(由于 >文件 B
更大)。
最佳答案
您将无法执行此操作,因为许多应用程序在读取文件之前会请求文件大小,然后仅读取报告的数据量。
关于c - 如何在 C 代码中动态更改/伪造 'file size',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671731/