上帝托夢給我說:一切皆文件

后記:這些故事當然是我杜撰的,Ken Thompson和Dennis Ritchie在設計Unix的時候,具體是怎么想的,我們無從知道。TCP/IP協(xié)議也不是Bill Joy在一個晚上就手寫出來的。這里只是想對這些做出偉大貢獻的大神們致以敬意。
我們現在所知道的就是在Unix/Linux上,一切皆是文件,設備,socket, pipe..... 它們有統(tǒng)一的名字空間和統(tǒng)一的訪問接口,這就實現了以最小代價對系統(tǒng)內類型迥異的各種資源的調用。
當一個“文件”被打開的時候,一個文件描述符也會被創(chuàng)建起來,文件路徑用來定位這個文件,文件描述符用來代表從這個“文件”中讀寫字節(jié)流的接口。 有時候文件描述符也可以表示匿名的管道和socket,這時候并沒有文件路徑, 所以如果更準確一點,我們應該說“一切皆文件描述符”
當然“一切皆文件”也不是完美的,因為不同的設備是有差別性的,“文件”這個抽象層次比較高,只能提供最基礎,最通用的方式來操作文件,這也是抽象所要付出的代價。
【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉載請通過作者微信公眾號coderising獲取授權】