Почему выдача одного запускает два процесса?

Я на текущей OS X 10.7. Иногда я хочу проверить, какое приложение блокирует определенный файл. Я делаю это

lsof | grep $FILENAME

Я заметил, что выполнение этой команды вызывает два экземпляра lsof, Это почему?

1 ответ

Решение

lsof делает это внутренне, чтобы избежать блокировки. Если ему нужно выполнить операцию, которая может зайти в тупик, он выполняет в ней вспомогательный процесс. Если операция блокируется, она может убить вспомогательный процесс. Это задокументировано в руководстве:

Lsof может быть заблокирован некоторыми функциями ядра, которые он использует - lstat(2), readlink(2) и stat(2). Эти функции останавливаются в ядре, например, когда узлы, на которых находятся смонтированные файловые системы NFS, становятся недоступными.

Lsof пытается разбить эти блоки с помощью таймеров и дочерних процессов,...

Другие вопросы по тегам