Как Mac OS X узнает, какие программы используют смонтированную файловую систему?

Это может показаться глупым вопросом, но до недавнего времени, если вы пытались размонтировать используемый том, Finder сообщал, что он используется, но не кем. Это простая функциональность Unix, если файл открыт в точке монтирования, не позволяйте ему извлекаться. Но теперь они, похоже, добавили функциональность, которая позволяет пользователю узнать, какие программы в настоящее время используют смонтированную систему, и я просматривал справочные страницы fopen, stat и т. д. для Unix, таких как операционные системы (дистрибутивы Linux), и я могу похоже, не найти аналогичный функционал.

Является ли эта функция специализированной, или я просто ищу не в том месте?


person awiebe    schedule 06.11.2011    source источник


Ответы (3)


Есть вызовы уровня BSD (в основном lsof, источник которых находится по адресу http://www.opensource.apple.com/source/lsof/), которые позволяют просматривать список файлов, открытых в процессе. Монитор активности, например, использует их.

Используя lsof в качестве отправной точки, вы можете перебрать процессы и посмотреть, использует ли какой-либо из них файл в исследуемой точке монтирования. Однако могут быть более эффективные способы сделать это, о которых я не знаю. :)

person Jonathan Grynspan    schedule 07.11.2011
comment
Lsof версии 4.82 перечисляет в своем стандартном выходном файле информацию о файлах, открытых процессами для следующих диалектов UNIX: AIX 5.3 FreeBSD 4.9 для систем на базе x86 FreeBSD 7.[01] и 8.0 для систем на базе AMD64 Linux 2.1.72 и выше для систем на базе x86 Mac OS X 10.[56] для систем Intel и PowerPC Solaris 9 и 10 - person awiebe; 11.11.2011
comment
Хорошо? Похоже, ты накрылся. - person Jonathan Grynspan; 11.11.2011

Это несколько специализировано. Проверьте утилиту lsof.

person Community    schedule 06.11.2011

Проверьте справочную страницу для fuser и запустите fuser -c /mountpoint

person andrew    schedule 07.11.2011