用于查找当前在gvim中打开的文件的c ++程序?

时间:2014-02-03 11:54:50

标签: c++

我想重命名文件夹,例如“mv -f old_proj_name new_proj_name”。

但是,由于文件在gvim编辑器中打开,因此不允许对文件夹执行重命名操作。

文件未移至新文件夹名称。

手动我已经使用解锁软件检查文件是否被其他进程锁定。

当gvim编辑器打开文件时,

fopen()没有显示文件被锁定。

我尝试使用opendir()API,但没有帮助。

现在我希望在我的代码中实现锁定检查功能,这样在进行重命名操作之前我应该​​知道我是否可以成功完成。

请指导我。

此致 AMOL

1 个答案:

答案 0 :(得分:1)

  

在进行重命名操作之前,我应该知道我是否能成功完成。

这是一个谬误。您只能在检查时知道是否可以成功执行操作。要知道您现在是否可以执行此操作,您需要立即检查 。但是当你真正开始执行它时,“现在”将转向“当时”。要获得可靠的指示,您需要再次检查

难道你不觉得它会很快变得烦人吗?

所以有两种方法可以解决这个问题。

首先,你可以希望(但从不知道)在支票和实际操作之间没有重要的事情发生。

其次,您可以完全跳过检查并尝试操作。如果它失败了,那么你就做不到。在那里,你已经一石二鸟:你已经检查了是否可以进行手术,并且确实可以进行手术。

<强>更新

如果您的数据组织方式必须执行可能失败的多个操作,并且数据一致性取决于所有这些操作成功或一次失败,则存在固有问题。您可以检查一些已知的故障情况,但(a)您永远无法检查所有可能的故障情况,并且(b)任何检查仅在执行时才有效。所以任何这样的检查都不会完全可靠。您可以防止某些故障而不是其他故障。对此的适当解决方案是数据存储,内置适当的回滚功能,即数据库。

希望它有所帮助。