Я пытаюсь извлечь флэш-накопитель USB на Mac из программы Java. Я пробовал 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.
Если скопирую команду в терминал и запущу, то работает отлично. Я подозреваю, что это связано с окружением, но, как видите, я не отправляю envp методу exec.
Что должен сделать программист, чтобы извлечение/размонтирование работало?
Спасибо!