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