什麼叫將硬碟看成乙個檔案,用訪問檔案的方法訪問硬碟?

時間 2021-06-07 02:04:43

1樓:醉臥沙場

想象一下,如果讓你給乙個檔案寫一段內容然後讀出來,和讓你給乙個磁碟分割槽寫一段內容然後讀出來。你會怎麼寫這個程式?會不一樣嗎?

(請在你充分思考後再看下文)

多說無意,直接看操作。像這樣的乙個mytest.c程式:

#include

#include

#include

#include

#include

#include

intmain

(int

argc

,char

*argv

)memset

(buf

,0x55

,count

);rc

=write(fd

,buf

,count

);if(rc

==-1)

fsync(fd

);close(fd

);fd

=open

(argv[1

],O_RDONLY

);if(fd

<0)rc=read(fd

,buf

,count

);if(rc

==-1)

for(i=

0;i<256;i++

)printf("

\n");return0;

}我們使用一樣的操作,對檔案和磁碟塊裝置分別寫入256個0x55,然後讀出來。

編譯:# gcc -o mytest mytest.c -Wall

對乙個普通檔案執行:

# echo > testfile

# ./mytest testfile

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

對乙個塊裝置執行:

# ./mytest /dev/sdb1

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

看到結果完全一致。

這就是「將硬碟看成檔案,用訪問檔案的方法訪問硬碟」的意思。

當然實際上裝置和普通檔案是不一樣的,Linux只是盡量統一了介面,但是由於它們本質上的差別,在操作時是有不同操作的。比如裝置的很多特別的ioctl命令,以及對一些裝置做IO操作時的限制等。不過總體來說設計思想還是盡量統一介面。

2樓:陳北宗

檔案是可以隨機訪問的。你給乙個偏移量,就可以跳到這個位置開始訪問。

硬碟是可以隨機訪問的。你給乙個塊位址,就可以跳到這個位置開始訪問。硬碟因為支援隨機訪問,因此被稱為塊裝置。

用蘋果電腦把乙個外接硬碟裡所有檔案複製到另乙個空的同樣容量的外接硬碟,為什麼提示空間不夠?

LetterBox Exfat最小檔案單元比ntfs apfs等都要大,所以等量的檔案佔空間會更大 比如說如果exfat最小檔案單元是10kb,ntfs是1kb1.5kb在exfat中實際佔空間為10kb,而ntfs為2kb33kb在exfat中實際佔空間為40kb,而ntfs為34kb但是exfa...

大腦能否可被看成乙個硬碟,裡面儲存著很多我們出生到死亡的所有資訊,而一切資訊處理只為延長自己的生存?

韻靈 靈魂意識大腦的關係在佛法唯識學中解釋的很清楚,如果你能接受靈魂,那去學下唯識能很好的解決你的疑惑。如果靈魂佛法還沒有什麼信心,可以看看這個帖子,佛作為聖者,很值得我們相信。你是怎樣開始學佛的?佛法上的神識類似,儲存著我們無始以來所做業的業種,但是這個識並不主動造作的,他是被動的,是配合其他識共...

如果電腦只有乙個機械硬碟,拆下來系統和檔案還存在嗎

王超 系統和檔案都儲存在原硬碟裡面,如果你的電腦有多餘的硬碟放置位置,可以不用拆原硬碟,如果沒有可以有兩種做法。1,如果有光碟機,可以將光碟機改硬碟放置位 如果光碟機對你不重要的話 2,將原硬碟相關資料備份,取下來,裝上新的硬碟,安裝新系統,將資料拷到資料盤 或者將系統轉殖到新硬碟裡,資料也拷貝進去...