在linux中我试图实现我自己的迷你shell以及一些基本命令作为功能。我打算实施移动操作。为了实现移动操作,我想到了两种选择。
备选方案1:使用open(), read() and write()
函数,将任何文件作为文件描述符打开,读取字节并将其传送给其他人。
备选方案2:使用内置的rename()
函数来实现移动功能。
我知道通过重命名,我无法使用rename()
功能覆盖现有文件。但除此之外,使用两种替代品有什么根本区别吗?
更具体地说,使用备选方案2有什么缺点,我应该知道吗?
答案 0 :(得分:3)
通过复制内容来执行移动会丢失文件以前具有的所有特定于文件系统的元数据(备用流,扩展属性,资源分叉等)。因此,单独复制内容不足以执行移动操作。
答案 1 :(得分:2)
当你"移动"在同一分区上的数据,您不需要额外的文件空间用于重命名功能。此外,同一分区上的重命名功能也非常快,因此在移动过程中您不会丢失写入日志文件的数据。