Я на текущей OS X 10.7. Иногда я хочу проверить, какое приложение блокирует определенный файл. Я делаю это
lsof | grep $FILENAME
Я заметил, что выполнение этой команды вызывает два экземпляра lsof
. Это почему?
lsof
делает это внутренне, чтобы избежать блокировки. Если он должен выполнить операцию, которая может зайти в тупик, он выполняет в ней вспомогательный процесс. Если операция блокируется, она может убить вспомогательный процесс. Это задокументировано в руководстве:
Lsof может быть заблокирован некоторыми функциями ядра, которые он использует - lstat(2), readlink(2) и stat(2). Эти функции останавливаются в ядре, например, когда узлы, на которых находятся смонтированные файловые системы NFS, становятся недоступными.
Lsof пытается разбить эти блоки с помощью таймеров и дочерних процессов, ...