Linux的文件系統是異步的,也就是說寫一個文件不是立刻保存到介質(硬盤,U盤等)中,而是存到緩沖區內,等積累到一定程度再一起保存到介質中。如果沒有umount就非法拔出U盤,程序是不知道的,fopen,fwrite等函數都依然返回正確,知道操作系統要把寫介質的時候,才會提示I/O錯誤。可是很多數據都會因為這個不及時的錯誤報告而丟失。
事實上,USB驅動程序在U盤插入和拔出時,都對系統配置文件做了修改。
例如U盤驅動程序會在插入或拔出時往 /proc/scsi/usb-storage-0/0 裡面記上 Attached:Yes or No
通過查看這個文件就不難檢測U盤是否插入或拔出了。
注意:U盤是否插入的狀態與是否掛載(mount)無關。