连接文件而不复制其内容

(在C / C ++ / Linux中)

有没有办法连接文件A和文件B(或者实际上将一个A的内容附加到B的内容)只通过修改文件系统而没有数据复制的开销? 文件A然后可以被丢弃。

谢谢

如果这些文件是块结构的,并且操作系统支持的块结构文件(如某些),那么(原则上)是的。 但是当你问到Linux时,我假设你正在谈论一个面向字节流的文件系统,在这个系统中,磁盘块可能不会被完全使用。 在这种情况下,一些复制是不可避免的,实际上你必须复制整个文件。

你可以编写你自己的文件系统(例如使用FUSE)来提供廉价的串联伪文件。 但是,我想这将是矫枉过正的(任何用例),因为你必须关心引用和东西。