我想重命名文件夹,例如" MV -F old_proj_name new_proj_name"。
但是,由于文件在GVIM编辑器中打开,因此不允许在文件夹上执行重命名操作。
文件未移动到新文件夹名称。
手动使用Unlocker软件检查文件是否已被其他过程锁定。
fopen()未显示文件是锁定的,当文件由GVIM编辑打开时。
我也尝试了opendir()API,但没有帮助。
现在,我希望在我的代码中实现锁检查功能,以便在重命名操作之前,我应该能够知道我是否可以成功执行。
请指导我。
问候,Amol
在进行重命名操作之前,我应该能够知道我是否可以成功地做。
这是一个谬论。您只能知道您是否可以在检查时成功执行操作。要知道您现在是否可以做到,您需要检查现在。但是,当您真正开始执行它时,"现在"会转向"当时"。要有可靠的指示,您需要再次检查。
您不认为它会变得很快吗?
因此,有两种处理方法。
首先,您可以希望(但永远不要知道),在检查和实际操作之间没有任何重要的事情。
第二,您可以完全跳过支票,然后尝试操作。如果失败,那么您将无法做到。在那里,您已经用一块石头杀死了两只鸟:您已经检查了是否可能进行操作,并在确实可能的情况下进行了操作。
update
如果您的数据的组织方式使您必须执行几个可能失败的操作,并且数据一致性取决于所有这些操作,或者立即失败,则存在一个固有的问题。您可以检查一些已知的故障条件,但是(a)您永远无法检查所有可能的故障条件,并且(b)任何检查都在执行的那一刻有效。因此,任何此类检查都不会完全可靠。您可能能够防止某些失败,但不能防止其他失败。一个足够的解决方案是数据存储,其中内置了适当的回滚工具,即数据库。
希望它有帮助。