如何卸载网络卷?
NSWorkspace
认为它们既不可拆卸也不可拆卸。 unmountAndEjectDeviceAtPath: @"/Volumes/the network volume in question"
不会导致任何事情发生。可能有一些简单的方法可以做到这一点,坐在我的鼻子底下,但我找不到它。
我不想使用Applescript告诉Finder弹出网络卷并从Cocoa调用它,因为这非常难以接受。
(顺便说一句,我的开发平台是老虎)
答案 0 :(得分:0)
呼叫unmount(2)
公平游戏? (奇怪的是,大多数Unix系统将系统调用命名为umount()
,而不是unmount()
,并且联机帮助页经常将其称为umount()
,尽管名称和摘要部分使用unmount()
相当清楚。 )
装载是否被其他任何东西使用?检查lsof(1)
或fuser(1)
输出以查看哪些进程(如果有)当前打开了该文件系统。 (也许在你的卸载调用之前添加一个简单的chdir("/");
会这样做吗?)
答案 1 :(得分:0)
你也可以使用diskutil处理比unmount()更多的情况:
std::string command = std::string("diskutil unmount \"") + currentMountPoint + "\"";
int ret = system( command.c_str() );
请注意挂载点周围的双引号,很可能类似于/Volumes/Untitled
,但也有类似/Volumes/NO NAME