Linux的文件系統是異步的,也就是說寫一個文件不是馬上保存到介質(硬盤,U盤等)中,而是存到緩衝區內,等積累到必定程度再一塊兒保存到介質中。若是沒有umount就非法拔出U盤,程序是不知道的,fopen,fwrite等函數都依然返回正確,知道操做系統要把寫介質的時候,纔會提示I/O錯誤。但是不少數據都會由於這個不及時的錯誤報告而丟失。linux
事實上,USB驅動程序在U盤插入和拔出時,都對系統配置文件作了修改。異步
例如U盤驅動程序會在插入或拔出時往 /proc/scsi/usb-storage-0/0 裏面記上 Attached:Yes or No函數
經過查看這個文件就不難檢測U盤是否插入或拔出了。spa
注意:U盤是否插入的狀態與是否掛載(mount)無關。操作系統
上面是針對linux的it
在OpenWrt下, 在目錄下/proc/scsi/usb-storage,配置
會出現0,1這樣的文件。程序
能夠cat 一下 :cat /proc/scsi/usb-storage/0配置文件
若是,沒有U盤插入,則對應的0,1文件是不會存在的。數據
所以能夠以此判斷U盤是否插入。