Размонтировать сетевой том? - PullRequest
1 голос
/ 27 сентября 2011

Как отключить сетевой том?

NSWorkspace считает, что они не являются ни съемными, ни не монтируемыми.unmountAndEjectDeviceAtPath: @"/Volumes/the network volume in question" ничего не вызывает.Вероятно, есть какой-то простой способ сделать это, сидя прямо под моим носом, но я не могу его найти.

Я не хочу прибегать к созданию Applescript, в котором говорится, что Finder извлекает сетевые тома и вызывает его из Какао, потому что это просто невероятно неприлично.

(моя платформа разработки - Tiger, отспособ)

Ответы [ 2 ]

0 голосов
/ 06 февраля 2014

Вы также можете использовать diskutil, который обрабатывает больше ситуаций, чем unmount ():

std::string command = std::string("diskutil unmount \"") + currentMountPoint + "\"";
int ret = system( command.c_str() );

Обратите внимание на двойные кавычки вокруг точки монтирования, скорее всего, что-то вроде /Volumes/Untitled, но также что-то вроде /Volumes/NO NAME

0 голосов
/ 27 сентября 2011

Звонит ли unmount(2) честная игра? (Как ни странно, большинство систем Unix называют системный вызов umount(), а не unmount(), а справочная страница часто называет его umount(), несмотря на то, что разделы имени и синопсиса довольно четко используют unmount().)

Маунт используется кем-то еще? Проверьте вывод lsof(1) или fuser(1), чтобы увидеть, какие процессы, если таковые имеются, имеют эту файловую систему в данный момент открытой. (Может быть, добавив простой chdir("/"); непосредственно перед тем, как ваш размонтированный вызов сделает это?)

...