在fuse文件系统中实现重命名

时间:2013-11-28 06:03:00

标签: c bash fuse

我正在尝试使用fuse实现内存中的文件系统。重命名函数接受'from'和'to'参数。

当我尝试在bash上执行此操作时, mv file1 file2 , 它在内部调用重命名函数(我使用-d选项来检查它)。

当我尝试在GUI中重命名该功能时,它再次调用重命名功能。

但是如果file2是一个已经存在的文件, mv 命令会覆盖它,而GUI则阻止我重命名该文件。如何强制执行此约束,因为这两个操作内部都没有区别地调用重命名函数。

1 个答案:

答案 0 :(得分:1)

rename函数通过删除旧名称原子替换目标文件。这就是它的全部要点,如果它没有正确地做到这一点,各种各样的事情都会严重破坏。对于希望阻止在另一个文件之上重命名的应用程序,他们必须首先使用link函数(如果目标存在则会失败),然后使用unlink旧名称link成功了。