Noi*_*art 9 command-line files
我正在寻找一个命令行函数或 c 函数,它会让我知道文件是否打开/正在被某些东西使用。
lsof
并且fuser
确实告诉了这一点,但是它们提供了许多其他信息,在某些情况下会导致最多 300 毫秒(例如,当我在 MAC OS X 上使用此代码时,我正在为 Linux 和 OS X 开发)(我有一个 Windows需要 5ms 的解决方案,所以我试图在 Unix 中找到一些也非常快的东西,如果文件正在使用,则只返回 true 或 false)
如果您正在使用这个作为一个锁,它不会因为工作没有lsof
或fuser
防止竞争条件。
执行的基本过程lsof
是遍历所有进程以/proc/*/fs
查找打开的文件描述符。无论你做什么,这都需要时间。
您可以自己执行此操作,但速度不可能更快,因为您必须检查系统上的每个打开的进程。
如果您正在做的事情对时间要求严格,请想出另一种方式来做。
/proc/<PID>/fs
您的文件当前是否打开。只查看一个进程打开文件描述符会比映射所有进程快得多。您在评论中提供了更多信息,希望确定 Firefox 是否在给定系统上运行。最好的方法是查找 Firefox 的锁定文件。它们存储在Mozilla wiki 上指定的默认位置。
例如,在 linux 上,让您的程序执行以下操作:
~/.mozilla/firefox/
目录。.default
. (我认为所有的配置文件都以.default
,结束,如果不只是爬入每个目录。)lock
或的文件的存在.parentlock
。如果您看到一个或两个文件,则 Firefox 已打开。该算法的执行速度应该比您目前在 Windows 上执行的速度更快。
归档时间: |
|
查看次数: |
29445 次 |
最近记录: |