linux下U盤狀態檢測


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

    注意:U盤是否插入的狀態與是否掛載(mount)無關。

 

當然這也不是唯一的方法檢測u盤的狀態。根據內核的設置情況,也可能沒有/proc/scsi目錄,但是/sys目錄下面會有usb的目錄,插拔u盤,目錄會自動創建和消失,如果上面的方法不可行,那么可以通過檢測這些目錄來判斷u盤或者sd卡等存儲設備的存在狀態,/sys/目錄下找到相關的usb或者sd卡的目錄,里面有更詳細的設備信息,包括設備出廠id,傳輸速度,容量等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM