1. 程式人生 > >Linux 一切皆檔案思想

Linux 一切皆檔案思想

“一切皆檔案”

在linux開發過程中,相信大家都聽過一句話叫作“limux下,一切皆檔案”。這句話是linux/unix的哲學核心思想,下面我們就針對這句話給大家進行展開解釋下。

這句話中的“檔案”不僅僅是我們通常所指的檔案,在linux和unix中它代表的更為寬泛。目錄、字元裝置、塊裝置、 套接字、程序、執行緒、管道等都被視為是一個“檔案”,那麼既然這樣當我們建立一個檔案時,我們如何來操作一個已經開啟檔案呢?

檔案描述符(file descriptor),簡稱fd

這裡就使用到了“檔案描述符”,它是一個對應某個已經開啟的檔案的索引(非負整數)。下圖表述了一個檔案描述符的意義,


其中每一個檔案描述符都是一個問檔案的索引,當然也可以出現多個不同的檔案描述符索引同一個檔案。在linux系統中,0是標準輸入的檔案描述符,stdin。1是標準輸出的檔案描述符,stdout。2是標準錯誤輸出的檔案描述符,stderr

  1. //test.cpp關於標準檔案描述符的測試
  2. #include<unistd.h>//這是系統呼叫read和write和標頭檔案
  3. #include<string.h>
  4. int main()
  5. {
  6. char *t = new char[10];
  7. read(0, t, 10); //從標準輸入(鍵盤)讀取10個位元組長度放入t中
  8. write(1, t, strlen(t));//將t中的前10個位元組內容寫出到標準輸出(螢幕)上
  9. return 0;
  10. }
g++ -o test test.cpp

./test


其中第一個行的”ertewtr”是read系統呼叫我們輸入的,第二行的”ertewtr”是write系統呼叫寫到螢幕上的。