linux下U盤狀態檢測

2021-09-22 21:43:55 字數 549 閱讀 5865

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,傳輸速度,容量等。

linux下u盤檢測程式

獲得u盤的插入或者拔取得資訊的傳統方法是在核心級執行hotplug程式,相關引數通過環境變數傳遞過來,再由hotplug通知其他關注hotplug的應用程式,但是效率比較低.網上查詢知道 使用者空間的程式與裝置通訊的方法,主要有以下幾種方式,1.通過ioperm獲取操作io埠的許可權,然後用inb ...

linux下u盤使用

方案一 linux不像windows一樣,接上新硬體後可以自動識別,在linux下無法自動識別新硬體的,需要手動去識別。usb移動儲存裝置通常被識別為sda1,具體可以通過fdisk l命令查詢。在使用u盤前,我們先要為外掛程式點新建乙個子目錄,一般外掛程式點的子目錄都是建立在 mnt裡面的,我們也...

Linux下使用U盤

linux不像windows一樣,接上新硬體後可以自動識別,在linux下無法自動識別新硬體的,需要手動去識別。usb移動儲存裝置通常被識別為sda1,具體可以通過fdisk l命令查詢。在使用u盤前,我們先要為外掛程式點新建乙個子目錄,一般外掛程式點的子目錄都是建立在 mnt裡面的,我們也建在那裡...