黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 詳解Linux文件描述符

詳解Linux文件描述符

更新時(shí)間:2020-12-24 17:38:42 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1364次

Linux內(nèi)核(kernel)利用文件描述符(file descriptor)來(lái)訪問(wèn)文件。文件描述符是非負(fù)整數(shù)。打開(kāi)現(xiàn)存文件或新建文件時(shí),內(nèi)核會(huì)返回一個(gè)文件描述符。在Linux系統(tǒng)中,讀寫(xiě)文件也需要使用Linux文件描述符來(lái)指定待讀寫(xiě)的文件。

 

實(shí)際上,文件描述符是一個(gè)索引值,指向內(nèi)核為每一個(gè)進(jìn)程所維護(hù)的該進(jìn)程打開(kāi)文件的記錄表。當(dāng)程序打開(kāi)一個(gè)現(xiàn)有文件或者創(chuàng)建一個(gè)新文件時(shí),內(nèi)核向進(jìn)程返回一個(gè)文件描述符。在程序設(shè)計(jì)中,一些涉及底層的程序編寫(xiě)往往會(huì)圍繞著文件描述符展開(kāi)。但是文件描述符這一概念往往只適用于UNIX、Linux這樣的操作系統(tǒng)。

 

習(xí)慣上,標(biāo)準(zhǔn)輸入(standard input)的Linux文件描述符是 0,標(biāo)準(zhǔn)輸出(standard output)是 1,標(biāo)準(zhǔn)錯(cuò)誤(standard error)是 2。盡管這種習(xí)慣并非Unix內(nèi)核的特性,但是因?yàn)橐恍?shell 和很多應(yīng)用程序都使用這種習(xí)慣,因此,如果內(nèi)核不遵循這種習(xí)慣的話,很多應(yīng)用程序?qū)⒉荒苁褂谩R虼耍贚inux的系統(tǒng)調(diào)用中,大量的系統(tǒng)調(diào)用都是依賴(lài)于Linux文件描述符。

 

先說(shuō)files,它是一個(gè)文件指針數(shù)組。一般來(lái)說(shuō),一個(gè)進(jìn)程會(huì)從files[0]讀取輸入,將輸出寫(xiě)入files[1],將錯(cuò)誤信息寫(xiě)入files[2]。

 

舉個(gè)例子,以我們的角度 C 語(yǔ)言的printf函數(shù)是向命令行打印字符,但是從進(jìn)程的角度來(lái)看,就是向files[1]寫(xiě)入數(shù)據(jù);同理,scanf函數(shù)就是進(jìn)程試圖從files[0]這個(gè)文件中讀取數(shù)據(jù)。

每個(gè)進(jìn)程被創(chuàng)建時(shí),files的前三位被填入默認(rèn)值,分別指向標(biāo)準(zhǔn)輸入流、標(biāo)準(zhǔn)輸出流、標(biāo)準(zhǔn)錯(cuò)誤流。我們常說(shuō)的「文件描述符」就是指這個(gè)文件指針數(shù)組的索引,所以程序的文件描述符默認(rèn)情況下 0 是輸入,1 是輸出,2 是錯(cuò)誤。

 

進(jìn)程獲取文件描述符最常見(jiàn)的方法是通過(guò)本機(jī)子例程open或create獲取或者通過(guò)從父進(jìn)程繼承。后一種方法允許子進(jìn)程同樣能夠訪問(wèn)由父進(jìn)程使用的文件。文件描述符對(duì)于每個(gè)進(jìn)程一般是特定的。當(dāng)用fork子例程創(chuàng)建某個(gè)子進(jìn)程時(shí),該子進(jìn)程會(huì)獲得其父進(jìn)程所有文件描述符的副本,這些文件描述符在執(zhí)行fork時(shí)打開(kāi)。在由fcntl、dup和dup2子例程復(fù)制或拷貝某個(gè)進(jìn)程時(shí),會(huì)發(fā)生同樣的復(fù)制過(guò)程。

 

對(duì)于每個(gè)進(jìn)程,操作系統(tǒng)內(nèi)核在u_block結(jié)構(gòu)中維護(hù)文件描述符表,所有的文件描述符都在該表中建立索引。到這里,我們不難看出「Linux 中一切皆文件」設(shè)計(jì)思路的高明了,不管是設(shè)備、另一個(gè)進(jìn)程、socket 套接字還是真正的文件,全部都可以讀寫(xiě),統(tǒng)一裝進(jìn)一個(gè)簡(jiǎn)單的files數(shù)組,進(jìn)程通過(guò)簡(jiǎn)單的文件描述符訪問(wèn)相應(yīng)資源,具體細(xì)節(jié)交于操作系統(tǒng),有效解耦,優(yōu)美高效。

 

實(shí)際上,Linux文件描述符看成是一種系統(tǒng)資源,可以通過(guò)相應(yīng)的命令來(lái)查看文件描述符的上限。每一個(gè)文件描述符會(huì)與一個(gè)打開(kāi)文件相對(duì)應(yīng),同時(shí),不同的文件描述符也會(huì)指向同一個(gè)文件。在本站的Linux教程中,對(duì)Linux文件描述符的使用有著詳細(xì)的講解,想要快速掌握Linux文件描述符的小伙伴可以前去觀看學(xué)習(xí)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 波多野结衣中文一区二区免费 | 国产精品久久永久免费 | 亚洲国产日韩a在线亚洲 | 午夜视频在线观看视频 | 亚洲国产午夜精品理论片的软件 | 看全色黄大色大片免费视频 | 一级毛片免费看 | 久久久久香蕉 | 日韩精品亚洲人成在线播放 | 国产一级黄色大片 | 婷婷开心激情网 | 国产苐1页影院草草影院 | 欧美天堂久久 | 国产xx做受视频国语对白 | 国产 欧美 日产中文 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片免费看 | 日韩欧美亚洲综合一区二区 | 美女图片在线视频精品播放 | 最新的黄色网址 | 国产小视频在线免费观看 | 99久9在线视频 | 免费中文字幕 | 久久激情影院 | 国产偷国产偷高清视频 | 成人亚洲视频在线观看 | 日本大蕉香蕉大视频在线观看 | 羞羞视频网站 | 波多野结衣被强在线视频 | 欧美一区二区三区在线观看不卡 | 天堂亚洲国产日韩在线看 | 欧美性猛交xxxx免费看手交 | 中国一级特黄高清免费的大片 | 黄色片在线免费 | 青草视频在线看 | 久久久综合视频 | 成人黄网18免费观看的网站 | 国产九九免费视频网站 | 亚洲伦理一区二区 | 天天干伊人 | 国产乱人伦偷精品视频不卡 | 看全色黄大色黄大片毛片 |