天天看點

《MacTalk•人生元程式設計》一一1.6 二逼檔案

本節書摘來自異步社群出版社《mactalk•人生元程式設計》一書中的第1章,第1.6節,作者:池建強,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

好,目錄檔案就介紹到這裡,後續介紹的檔案類型平時操作很少用到,我把它們統稱為二逼檔案類型,光榮入選的有以下幾個。

塊裝置檔案和字元裝置檔案,這些檔案一般隐藏在/dev目錄下,晝伏夜出,平時你感覺不到它們的存在,但是你想進行裝置讀取和外設互動時,就是它們大顯身手的時候。比如磁盤光驅就是塊裝置檔案,序列槽裝置則屬于字元裝置檔案。系統中的所有裝置要麼是塊裝置檔案,要麼是字元裝置檔案,無一例外。

fifo,江湖人稱命名管道,主要用于程序間通訊。比如使用mkfifo指令可以建立一個fifo檔案,啟用一個程序a從fifo檔案裡讀資料,啟動程序b往fifo裡寫資料,先進先出,随寫随讀,童叟無欺。

套接字(socket),也是一種檔案類型,可以用于程序間的網絡通信,也可以用于本機之間的非網絡通信。比如你會時不時見到字尾為sock的程序檔案,這些檔案一般隐藏在/var/run目錄下,它們活躍在伺服器裡,證明着那些相關程序的存在。

符号連結(symbolic link),這種類型的檔案類似windows中的快捷方式,是指向另一個檔案的間接指針,也就是我們常說的軟連結。

            

大約是夜裡十一點鐘的光景,我走到院子裡,深深呼吸,猛然一擡頭——天呐,我看見了滿天的星星。

天空深藍,星星密布,似乎觸手可及,卻又如此高遠。沒有一絲雲彩,沒有半點雜光。我呆在當地,張口結舌,感覺和做夢一樣。滿天都是星星。仔細看,銀漢橫陳,微微彎曲。北鬥七星、北極星、織女星、牛郎星……我認識的星星、不認識的星星,如同珍珠的洪流,一齊向我撲來。一刹那,童年,那若有若無的歲月,也夾在這股洪流中,撲向我,把我的心鼓擂得轟轟作響。我就那樣呆站着,癡癡地看,一直到頸脖僵硬,頭暈眼花。

從那個時刻起,我再次發現了星星和世界的美麗,我的接近幹渴的生命,降下了新鮮甜美的雨水。生命中的起伏和挫折,個人那一點點喪失和傷痛,那似乎無法忍受的一切,與這浩大雄偉的星空比起來,又算得了什麼呢?

讀好書,時間如天際的流星一閃即過,待得眼皮打架,已近淩晨,于是沉沉睡去。

今天上午9點醒來,吃過早餐就被家裡的大小ld訓示去打各種醬油,然後就沒有上午了。午飯後,所有的血液都流向消化系統,内髒器官拉開架勢準備消化主人胡吃海塞的成果,大腦所有理智的訓示都被忽略掉,加之最近一個月神經病一樣的工作日和休息日,再次昏睡過去,然後就沒有下午了。

于是,現在,再一次,我打開mac,開始寫這篇文章。在開始之前,有了這些散碎的文字,其中兩個問題困擾着我:

1.在堅持了這麼久之後,我似乎依然是個拖延症患者.

2.看了這些爐火純青的文字,每次寫字會有心理障礙。是知其不可而為之者與?

在linux檔案系統中,其實也存在“軟硬”這樣的描述,但是不涉及硬體體系,而是我今天要寫的硬連結和軟連結。

在人類的克隆技術還沒那麼完美的情況下,人做為一個獨立的個體立于天地間,沒有副本,沒有替身,沒有快捷方式,沒有還血仙丹,一旦死亡,這個人就算了結了,在現實世界中被抹掉了。

在linux的世界裡,大部分檔案也是類似的待遇,一旦檔案被删除,檔案相關的inode資訊都會被抹掉,檔案占用的磁盤空間也會被釋放,這種情況下檔案名和inode是一對一的。為了滿足更為複雜的檔案操作,linux系統的設計者提供了更為進階的服務,那就是硬連結和軟連結的技術,這些技術讓linux世界裡的檔案和目錄具備了副本和替身的能力。效果就是你明明删除了某個檔案,但是如果有人在你删除之前做了檔案的硬連結,你會發現同樣内容的檔案依舊存在于系統中,你剛剛做的修改還在那裡冒着熱氣。不要對自己說見鬼了,這是程式邏輯。

繼續閱讀