大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 詳解Linux文件描述符

詳解Linux文件描述符

更新時間:2020-12-24 17:38:42 來源:動力節點 瀏覽1270次

Linux內核(kernel)利用文件描述符(file descriptor)來訪問文件。文件描述符是非負整數。打開現存文件或新建文件時,內核會返回一個文件描述符。在Linux系統中,讀寫文件也需要使用Linux文件描述符來指定待讀寫的文件。

 

實際上,文件描述符是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時,內核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫往往會圍繞著文件描述符展開。但是文件描述符這一概念往往只適用于UNIX、Linux這樣的操作系統。

 

習慣上,標準輸入(standard input)的Linux文件描述符是 0,標準輸出(standard output)是 1,標準錯誤(standard error)是 2。盡管這種習慣并非Unix內核的特性,但是因為一些 shell 和很多應用程序都使用這種習慣,因此,如果內核不遵循這種習慣的話,很多應用程序將不能使用。因此,在Linux的系統調用中,大量的系統調用都是依賴于Linux文件描述符。

 

先說files,它是一個文件指針數組。一般來說,一個進程會從files[0]讀取輸入,將輸出寫入files[1],將錯誤信息寫入files[2]。

 

舉個例子,以我們的角度 C 語言的printf函數是向命令行打印字符,但是從進程的角度來看,就是向files[1]寫入數據;同理,scanf函數就是進程試圖從files[0]這個文件中讀取數據。

每個進程被創建時,files的前三位被填入默認值,分別指向標準輸入流、標準輸出流、標準錯誤流。我們常說的「文件描述符」就是指這個文件指針數組的索引,所以程序的文件描述符默認情況下 0 是輸入,1 是輸出,2 是錯誤。

 

進程獲取文件描述符最常見的方法是通過本機子例程open或create獲取或者通過從父進程繼承。后一種方法允許子進程同樣能夠訪問由父進程使用的文件。文件描述符對于每個進程一般是特定的。當用fork子例程創建某個子進程時,該子進程會獲得其父進程所有文件描述符的副本,這些文件描述符在執行fork時打開。在由fcntl、dup和dup2子例程復制或拷貝某個進程時,會發生同樣的復制過程。

 

對于每個進程,操作系統內核在u_block結構中維護文件描述符表,所有的文件描述符都在該表中建立索引。到這里,我們不難看出「Linux 中一切皆文件」設計思路的高明了,不管是設備、另一個進程、socket 套接字還是真正的文件,全部都可以讀寫,統一裝進一個簡單的files數組,進程通過簡單的文件描述符訪問相應資源,具體細節交于操作系統,有效解耦,優美高效。

 

實際上,Linux文件描述符看成是一種系統資源,可以通過相應的命令來查看文件描述符的上限。每一個文件描述符會與一個打開文件相對應,同時,不同的文件描述符也會指向同一個文件。在本站的Linux教程中,對Linux文件描述符的使用有著詳細的講解,想要快速掌握Linux文件描述符的小伙伴可以前去觀看學習。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久精品中文 | 福利视频在线播放 | 看全色黄大色大片免费久久久 | 妇女网站爱嘿嘿视频免费观看 | 国产精品香蕉一区二区三区 | 日本高清专区一区二无线 | 精品91自产拍在线观看一区 | 全部免费的毛片在线看青青 | 亚洲精品乱码久久久久久麻豆 | 国产娱乐凹凸视觉盛宴在线视频 | 亚洲欧美日韩高清中文在线 | 国产成人丝袜网站在线观看 | 97人人澡 | 日本黄色小视频在线观看 | 亚洲视频一 | 亚洲看黄| 国产欧美精品一区二区 | 视频一区久久 | 国产福利区一区二在线观看 | 玖玖精品在线观看 | 99久久综合狠狠综合久久一区 | 亚洲日本高清影院毛片 | 午夜性色吃奶添下面69影院 | 亚洲欧美一级久久精品 | 一级做a爱片久久蜜桃 | 欧美综合激情 | 色综合视频在线观看 | 久久香蕉国产线 | 亚洲最大综合网 | 天天爽夜夜爽视频 | 九九99香蕉在线视频美国毛片 | 野花成人 | 久久综合精品国产一区二区三区 | 欧美同房免姿势108费视频 | vr欧美乱强伦xxxxx | 真91视频 | 久久久久国产精品免费免费不卡 | 精品影视 | 久久在线 | 欧美人成毛片在线播放 | 国产99视频精品免视看9 |