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