Linux 句柄是什么
分享一下我老師大神的人工智能教程!零基礎(chǔ),通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉(zhuǎn)載本篇文章。分享知識,造福人民,實現(xiàn)我們中華民族偉大復(fù)興!
1.句柄就是一個標(biāo)識符,只要獲得對象的句柄,我們就可以對對象進(jìn)行任意的操作。
2.句柄不是指針,操作系統(tǒng)用句柄可以找到一塊內(nèi)存,這個句柄可能是標(biāo)識符,map的key,也可能是指針,看操作系統(tǒng)怎么處理的了。
fd算是在某種程度上替代句柄吧;
Linux?有相應(yīng)機(jī)制,但沒有統(tǒng)一的句柄類型,各種類型的系統(tǒng)資源由各自的類型來標(biāo)識,由各自的接口操作。
3.http://tech.ddvip.com/2009-06/1244006580122204_11.html
在操作系統(tǒng)層面上,文件操作也有類似于FILE的一個概念,在Linux里,這叫做文件描述符(File Descriptor),而在Windows里,叫做句柄(Handle)(以下在沒有歧義的時候統(tǒng)稱為句柄)。用戶通過某個函數(shù)打開文件以獲得句柄,此?后用戶操縱文件皆通過該句柄進(jìn)行。
?
設(shè)計這么一個句柄的原因在于句柄可以防止用戶隨意讀寫操作系統(tǒng)內(nèi)核的文件對象。無論是Linux還是Windows,文件句柄總是和內(nèi)核的文件對象相關(guān)聯(lián)的,但如何關(guān)聯(lián)細(xì)節(jié)用戶并不可見。內(nèi)核可以通過句柄來計算出內(nèi)核里文件對象的地址,但此能力并不對用戶開放。
?
下面舉一個實際的例子,在Linux中,值為0、1、2的fd分別代表標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出。在程序中打開文件得到的fd從3開始增長。?fd具體是什么呢?在內(nèi)核中,每一個進(jìn)程都有一個私有的“打開文件表”,這個表是一個指針數(shù)組,每一個元素都指向一個內(nèi)核的打開文件對象。而fd,就是這?個表的下標(biāo)。當(dāng)用戶打開一個文件時,內(nèi)核會在內(nèi)部生成一個打開文件對象,并在這個表里找到一個空項,讓這一項指向生成的打開文件對象,并返回這一項的下標(biāo)?作為fd。由于這個表處于內(nèi)核,并且用戶無法訪問到,因此用戶即使擁有fd,也無法得到打開文件對象的地址,只能夠通過系統(tǒng)提供的函數(shù)來操作。
?
在C語言里,操縱文件的渠道則是FILE結(jié)構(gòu),不難想象,C語言中的FILE結(jié)構(gòu)必定和fd有一對一的關(guān)系,每個FILE結(jié)構(gòu)都會記錄自己唯一對應(yīng)的fd。
句柄?http://zh.wikipedia.org/wiki/%E5%8F%A5%E6%9F%84
在程序設(shè)計?中,句柄是一種特殊的智能指針?。當(dāng)一個應(yīng)用程序?要引用其他系統(tǒng)(如數(shù)據(jù)庫、操作系統(tǒng)?)所管理的內(nèi)存?塊或?qū)ο?時,就要使用句柄。
句柄與普通指針?的區(qū)別在于,指針包含的是引用對象?的內(nèi)存地址?,而句柄則是由系統(tǒng)所管理的引用標(biāo)識,該標(biāo)識可以被系統(tǒng)重新定位到一個內(nèi)存地址?上。這種間接訪問對象?的模式增強(qiáng)了系統(tǒng)對引用對象?的控制。(參見封裝?)。
在上世紀(jì)80年代的操作系統(tǒng)(如Mac OS?和Windows?)的內(nèi)存管理?中,句柄被廣泛應(yīng)用。Unix?系統(tǒng)的文件描述符?基本上也屬于句柄。和其它桌面環(huán)境?一樣,Windows API?大量使用句柄來標(biāo)識系統(tǒng)中的對象?,并建立操作系統(tǒng)與用戶空間?之間的通信渠道。例如,桌面上的一個窗體由一個HWND?類型的句柄來標(biāo)識。
如今,內(nèi)存?容量的增大和虛擬內(nèi)存?算法使得更簡單的指針?愈加受到青睞,而指向另一指針的那類句柄受到冷淡。盡管如此,許多操作系統(tǒng)?仍然把指向私有對象?的指針以及進(jìn)程傳遞給客戶端?的內(nèi)部數(shù)組?下標(biāo)稱為句柄。
???????????給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow
你好! 這是你第一次使用 **Markdown編輯器** 所展示的歡迎頁。如果你想學(xué)習(xí)如何使用Markdown編輯器, 可以仔細(xì)閱讀這篇文章,了解一下Markdown的基本語法知識。新的改變
我們對Markdown編輯器進(jìn)行了一些功能拓展與語法支持,除了標(biāo)準(zhǔn)的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你用它寫博客:
功能快捷鍵
撤銷:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜體:Ctrl/Command + I
標(biāo)題:Ctrl/Command + Shift + H
無序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
檢查列表:Ctrl/Command + Shift + C
插入代碼:Ctrl/Command + Shift + K
插入鏈接:Ctrl/Command + Shift + L
插入圖片:Ctrl/Command + Shift + G
合理的創(chuàng)建標(biāo)題,有助于目錄的生成
直接輸入1次#,并按下space后,將生成1級標(biāo)題。
輸入2次#,并按下space后,將生成2級標(biāo)題。
以此類推,我們支持6級標(biāo)題。有助于使用TOC語法后生成一個完美的目錄。
如何改變文本的樣式
強(qiáng)調(diào)文本 強(qiáng)調(diào)文本
加粗文本 加粗文本
標(biāo)記文本
刪除文本
引用文本
H2O is是液體。
210 運算結(jié)果是 1024.
插入鏈接與圖片
鏈接: link.
圖片:
帶尺寸的圖片:
當(dāng)然,我們?yōu)榱俗層脩舾颖憬?#xff0c;我們增加了圖片拖拽功能。
如何插入一段漂亮的代碼片
去博客設(shè)置頁面,選擇一款你喜歡的代碼片高亮樣式,下面展示同樣高亮的 代碼片.
// An highlighted block var foo = 'bar';生成一個適合你的列表
- 項目
- 項目
- 項目
- 項目
- 計劃任務(wù)
- 完成任務(wù)
創(chuàng)建一個表格
一個簡單的表格是這么創(chuàng)建的:
| 電腦 | $1600 |
| 手機(jī) | $12 |
| 導(dǎo)管 | $1 |
設(shè)定內(nèi)容居中、居左、居右
使用:---------:居中
使用:----------居左
使用----------:居右
| 第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants將ASCII標(biāo)點字符轉(zhuǎn)換為“智能”印刷標(biāo)點HTML實體。例如:
| Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
| Quotes | "Isn't this fun?" | “Isn’t this fun?” |
| Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
創(chuàng)建一個自定義列表
Markdown如何創(chuàng)建一個注腳
一個具有注腳的文本。2
注釋也是必不可少的
Markdown將文本轉(zhuǎn)換為 HTML。
KaTeX數(shù)學(xué)公式
您可以使用渲染LaTeX數(shù)學(xué)表達(dá)式 KaTeX:
Gamma公式展示 Γ(n)=(n?1)!?n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n?1)!?n∈N 是通過歐拉積分
Γ(z)=∫0∞tz?1e?tdt .\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞?tz?1e?tdt.
你可以找到更多關(guān)于的信息 LaTeX 數(shù)學(xué)表達(dá)式here.
新的甘特圖功能,豐富你的文章
ganttdateFormat YYYY-MM-DDtitle Adding GANTT diagram functionality to mermaidsection 現(xiàn)有任務(wù)已完成 :done, des1, 2014-01-06,2014-01-08進(jìn)行中 :active, des2, 2014-01-09, 3d計劃一 : des3, after des2, 5d計劃二 : des4, after des3, 5d- 關(guān)于 甘特圖 語法,參考 這兒,
UML 圖表
可以使用UML圖表進(jìn)行渲染。 Mermaid. 例如下面產(chǎn)生的一個序列圖::
張三李四王五你好!李四, 最近怎么樣?你最近怎么樣,王五?我很好,謝謝!我很好,謝謝!李四想了很長時間,文字太長了不適合放在一行.打量著王五...很好... 王五, 你怎么樣?張三李四王五這將產(chǎn)生一個流程圖。:
鏈接長方形圓圓角長方形菱形- 關(guān)于 Mermaid 語法,參考 這兒,
FLowchart流程圖
我們依舊會支持flowchart的流程圖:
- 關(guān)于 Flowchart流程圖 語法,參考 這兒.
導(dǎo)出與導(dǎo)入
導(dǎo)出
如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當(dāng)你完成了一篇文章的寫作, 在上方工具欄找到 文章導(dǎo)出 ,生成一個.md文件或者.html文件進(jìn)行本地保存。
導(dǎo)入
如果你想加載一篇你寫過的.md文件或者.html文件,在上方工具欄可以選擇導(dǎo)入功能進(jìn)行對應(yīng)擴(kuò)展名的文件導(dǎo)入,
繼續(xù)你的創(chuàng)作。
mermaid語法說明 ??
注腳的解釋 ??
總結(jié)
以上是生活随笔為你收集整理的Linux 句柄是什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jade入门与初步使用
- 下一篇: qt linux 网络聊天室,QT tc