linux mknod命令解析
個人覺得linux的軟體設計思想異常強大,比如把所有的裝置都當做檔案來處理,大大簡化了程式設計師的負擔,向提出這個思想的大神s致敬!!
先來看看linux系統中裝置管理的基本知識:
我們的linux作業系統跟外部裝置(如磁碟、光碟等)的通訊都是通過裝置檔案進行的,應用程式可以開啟、關閉、讀寫這些裝置檔案,從而對裝置進行讀寫,這種操作就像讀寫普通的檔案一樣easy。linux為不同種類的裝置檔案提供了相同的介面,比如read(),write(),open(),close()。
所以在系統與裝置通訊之前,系統首先要建立一個裝置檔案,這個裝置檔案存放在/dev目錄下。其實系統預設情況下就已經生成了很多裝置檔案,但有時候我們需要自己手動新建一些裝置檔案,這個時候就會用到像mkdir, mknod這樣的命令。
mknod 的標準形式為: mknod DEVNAME {b | c} MAJOR MINOR
1,DEVNAME是要建立的裝置檔名,如果想將裝置檔案放在一個特定的資料夾下,就需要先用mkdir在dev目錄下新建一個目錄;
2, b和c 分別表示塊裝置和字元裝置:
b表示系統從塊裝置中讀取資料的時候,直接從記憶體的buffer中讀取資料,而不經過磁碟;
c表示字元裝置檔案與裝置傳送資料的時候是以字元的形式傳送,一次傳送一個字元,比如印表機、終端都是以字元的形式傳送資料;
3,MAJOR和MINOR分別表示主裝置號和次裝置號:
為了管理裝置,系統為每個裝置分配一個編號,一個裝置號由主裝置號和次裝置號組成。主裝置號標示某一種類的裝置,次裝置號用來區分同一型別的裝置。linux作業系統中為裝置檔案編號分配了32位無符號整數,其中前12位是主裝置號,後20位為次裝置號,所以在向系統申請裝置檔案時主裝置號不好超過4095,次裝置號不好超過2^20 -1。
.
下面,我們就可以用mknod命令來申請裝置檔案了。
mkdir -p /dev/cobing
mknod /dev/cobing/mydev1 c 128 512