使用 lsof 命令,我可以确定某个文件是否正在被某个进程使用,但我需要自动检查文件以供使用,并且只有在未使用时才移动它。这些文件被我无法控制的各种其他程序使用,所以我不能使用咨询锁。目的是阻止其他进程修改该文件,因此仅在进程打开文件时移动文件是不行的。有什么解决办法吗?
更新:我刚刚想到了一个我认为适合我的目的的解决方案。最终目标是在其他程序完成修改时以最终状态处理这些文件。如果我将文件移动到另一个目录,我可以使用 lsof 通过它的旧路径检查它是否仍在使用中;如果是这样,我稍后再检查一次,直到它不再使用,然后处理文件。通过将文件移动到另一个目录,它会对用户和程序隐藏文件。我不希望用户和程序看到旧目录中的文件,因为这使他们有机会在我使用 lsof 和处理文件之间打开文件,这意味着我将在修改状态下处理文件。