можно и не отмонтировать, достаточно сделать sync )
хотя все равно чревато тем, что если открыты какие-то файлы, то программа которая их открыла может упасть
<troll>Чтобы пользователи FreeBSD не увидели намертво зависшую систему.</troll>
По теме: чтобы убедится, что данные окончательно записались, есть такой баг, когда ГУИ показывают, что файлы скопированы, а на самом деле оказываются «побитыми».
> можно монтировать так, чтоб он не использовался?
Вроде можно. Но программа, которая будет горько плакать и вешаться потеряв файл что читала, останется. И что-бы увидеть новый носитель его придётся монтировать, а старый при этом всё равно отмонтировать. Или собирать коллекцию монтированных одна поверх другой файловых систем. С горько плачущими приложениями.
Ну, если бы модифицировать close() так, чтобы после основного действия он делал fsync(), то тогда можно если на носителе все файлы закрыты, то носитель можно выдергивать без отмонтирования.
>>Почему надо отмонтировать накопители перед извлечением?
Только на линупсе, детка.
На FreeBSD уже можно не делать.
Молчал бы Изен лучше. Udev в линуксе уже давно есть, а демон описанный в статье как раз и занимается монтированием/отмонтированием фс.
А вот тебе еда (из этой же статьи):
Три ложечки дёгтя
1. Необходимость в использовании имени учётной записи пользователя (username), к которому привязывается точка монтирования;
2. Фиксированное название раздела носителя (da0s1) не позволит смонтировать в автоматическом режиме другие носители;
3. Фиксированный тип файловой системы (msdosfs) на монтируемом носителе не позволяет правилом attach смонтировать носитель, с тем же названием раздела, но с отличной от FAT ФС.