我正在尝试使用熔丝实现内存中文件系统。重命名函数接受'from'和'to'参数。在熔丝文件系统中实现重命名
当我试图在bash中这样做, MV文件1文件2, 它在内部调用更名功能(我用-d选项检查)。
当我尝试在GUI中重命名该函数时,它再次调用重命名函数。
但是,如果file2是已经存在的文件,则mv命令覆盖它,而GUI禁止我重命名该文件。我该如何执行这个约束,因为这两个操作在内部都没有区别地调用重命名函数。
我正在尝试使用熔丝实现内存中文件系统。重命名函数接受'from'和'to'参数。在熔丝文件系统中实现重命名
当我试图在bash中这样做, MV文件1文件2, 它在内部调用更名功能(我用-d选项检查)。
当我尝试在GUI中重命名该函数时,它再次调用重命名函数。
但是,如果file2是已经存在的文件,则mv命令覆盖它,而GUI禁止我重命名该文件。我该如何执行这个约束,因为这两个操作在内部都没有区别地调用重命名函数。
rename
函数用原子替换目标文件并删除旧名称。这是它的全部要点,如果它没有做到这一点,那么各种事情就会崩溃。对于想要防止重命名在另一个文件之上的应用程序,他们必须先使用link
函数(如果目标存在,将会失败),然后在link
成功时使用旧名称unlink
。
为什么你认为'mv'的行为对于你的文件系统来说比任何其他文件系统都不同? –
Afaik获得该行为的唯一方法是在调用'rename'之前检查文件是否作为单独的操作存在。我猜你所描述的GUI是这样做的。 –
我不认为MV是不同的。我担心的是,当我做mv file1 file2时,如果file2已经存在,它将被覆盖。如果我对gui重新命名,它会阻止我。当我的代码在内部调用重命名函数时,如何处理它。 – Torpedo