linux是文件型系統,所有硬件如軟件都會在對于的目錄下面有相應的文件表示。對于dev這個目錄,我們知道它下面的文件,表示的是linux的設備。在windows系統中,設備大家很好理解,象硬盤,磁盤指的是實實在在硬件。而在文件系統的linux下面,都有對于文件與這些設備關聯的。訪問它們就可以放到實際硬件,想想還是linux靈活了。變成文件,操作該多簡單了。不用調用以前com,prt等接口了。直接讀文件,寫文件就可以向設備發送讀或者寫操作了。 按照讀寫存儲數據方式,我們可以把設備分為以下幾種:字符型設備,塊設備,偽設備。
一、設備分類
字符型設備
字符設備是指每次與系統傳輸1個字符的設備。這些設備節點通常為傳真、虛擬終端和串口調制解調器、鍵盤之類設備提供流通信服務,它通常不支持隨機存取數據。 字符設備在實現時,大多不使用緩存器。系統直接從設備讀取/寫入每一個字符。例如,鍵盤這種設備提供的就是一個數據流,當你敲入“cnblogs”這個字符串時,鍵盤驅動程序會按照和輸入完全相同的順序返回這個由七個字符組成的數據流。它們是順序的,先返回c,最后是s。
塊設備
塊設備是指與系統間用塊的方式移動數據的設備。這些設備節點通常代表可尋址設備,如硬盤、CD-ROM和內存區域。
塊設備通常支持隨機存取和尋址,并使用緩存器。操作系統為輸入輸出分配了緩存以存儲一塊數據。當程序向設備發送了讀取或者寫入數據的請求時,系統把數據中的每一個字符存儲在適當的緩存中。當緩存被填滿時,會采取適當的操作(把數據傳走),而后系統清空緩存。它與字符設備不同之處就是,是否支持隨機存儲。字符型是流形式,逐一存儲。
偽設備
在類Unix操作系統中,設備節點并不一定要對應物理設備。沒有這種對應關系的設備是偽設備。操作系統運用了它們提供的多種功能。部份經常使用到的偽設備包括: null,zero,full,loop,random,urandom
二、特殊設備及使用
這里說到特殊設備除了硬盤主板等,只是它在linux shell命令里面,有特殊的作用,因此把它們單獨拿出來。這些設備分別是:
/dev/stdin
/dev/stdout
/dev/stderr
/dev/null
/dev/zero
/dev/full
/dev/random,urandom
/dev/fd
/dev/tcp|upd
/dev/loop
1、標準輸出輸入設備
還記得上次說的,linux重定向嗎?可以看下:linux shell數據重定向(輸入重定向與輸出重定向)詳細分析 。它們就是與幾個特殊文件描述符對應,fd0,fd1,fd2 (stdin,stdout,stderr)
如:
[chengmo@centos5 shell]$ cat>teststdin</dev/stdintest#ctrl+D#cat從/dev/stdin獲得數據,然后將標準輸出,輸入的到teststdin文件[chengmo@centos5 shell]$ cat teststdin test [chengmo@centos5 shell]$ cat>teststdintest#ctrl+D#不指定輸入,默認輸入設備就是/dev/stdinn
新聞熱點
疑難解答