为什么发出一个 lsof 会启动两个进程?

为什么发出一个 lsof 会启动两个进程?

我目前使用的是 OS X 10.7。有时我想检查哪个应用程序锁定了某个文件。我这样做

lsof | grep $FILENAME

我注意到运行此命令会调用两个实例lsof。这是为什么呢?

答案1

lsof内部执行此操作以避免死锁。如果它必须执行可能死锁的操作,它会在其中执行辅助进程。如果操作死锁,它可以终止辅助进程。手册中有记录:

Lsof 可能会被它使用的某些内核函数阻止 - lstat(2)、readlink(2) 和 stat(2)。例如,当挂载 NFS 文件系统的主机无法访问时,这些函数会在内核中停滞。

Lsof 尝试使用计时器和子进程来打破这些阻止,......

相关内容