我目前使用的是 OS X 10.7。有时我想检查哪个应用程序锁定了某个文件。我这样做
lsof | grep $FILENAME
我注意到运行此命令会调用两个实例lsof
。这是为什么呢?
答案1
lsof
内部执行此操作以避免死锁。如果它必须执行可能死锁的操作,它会在其中执行辅助进程。如果操作死锁,它可以终止辅助进程。手册中有记录:
Lsof 可能会被它使用的某些内核函数阻止 - lstat(2)、readlink(2) 和 stat(2)。例如,当挂载 NFS 文件系统的主机无法访问时,这些函数会在内核中停滞。
Lsof 尝试使用计时器和子进程来打破这些阻止,......