我需要检查文件当前是否被另一个进程打开,例如文本编辑器(但也需要应用于其他所有内容)。
我尝试使用std::ofstream::is_open()
等,但这不起作用。当我的程序检查它是否打开时,我可以在我的文本编辑器中打开该文件。该程序将其视为一个关闭的文件并继续。只有当我像另一个人一样打开它时,它ofstream
才会起作用。
我正在使用文件系统库来复制文件,如果文件当前没有被客户端服务器上的另一个进程写入,它们可能只会被复制(然后删除)。
真的很好奇这个。很长一段时间以来一直在想这个问题,但我自己从来没有找到一个好的方法。
我目前正在制作一个需要能够在 linux 和 windows 上运行的程序。每 5 秒它会将目录 a、b、c、d 中的所有文件复制到 x。这可以由客户端在规则中设置。在它复制了所有内容之后。所有文件都可能被删除。一天后(或客户告诉程序的任何内容),来自 x 的所有文件都需要压缩并存档在位置 y 上。因此问题是,如果将所有文件放在目录 a、b、c、d 中的其他程序现在没有触及该特定文件,则文件可能只会被删除(和复制)。希望这使问题更清楚。
在任何人开始之前。是的,我知道数据竞争条件。我暂时不关心这个。该程序对文件的内容完全不做任何事情。并且文件被其他进程关闭后,它将永远关闭。