我正在尝试从Java程序中弹出Mac上的USB闪存驱动器。我已经尝试了umount和diskutil eject,但都无法正常工作。两者都返回了退出代码1。如果我物理拔出驱动器,Mac OS X会给我标准警告。
我的代码:
log.debug( "going to eject targetRoot.getPath()=" + targetRoot.getPath() );
String command = "diskutil eject " + targetRoot.getPath().replace( " ", "\\ " );
log.debug( "about to run command=" + command );
int exitCode = Runtime.getRuntime().exec( command ).waitFor();
log.debug( "exitCode=" + exitCode );
输出结果:
going to eject targetRoot.getPath()=/Volumes/NO NAME
about to run command=diskutil eject /Volumes/NO\ NAME
exitCode=1
手册表明,您可以使用挂载路径或设备路径作为umount或diskutil eject的参数。
如果我将命令复制到终端并运行,则可以完美地运行。我怀疑这与环境有关,但是如您所见,我没有向exec方法发送envp。
作为程序员,要使弹出/卸载正常工作,该做些什么呢?
谢谢!