Linux編程--文件描述符fd

學號:19021211263

linux中, 每一個進程在內核中,都對應有一個“打開文件”數(shù)組,存放指向文件對象的指針,而 fd 是這個數(shù)組的下標。

? 我們對文件進行操作時,系統(tǒng)調用,將fd傳入內核,內核通過fd找到文件,對文件進行操作。

? 既然是數(shù)組下標,fd的類型為int, < 0 為非法值, >=0 為合法值。在linux中,一個進程默認可以打開的文件數(shù)為1024個,fd的范圍為0~1023。可以通過設置,改變最大值。

? 在linux中,值為0、1、2的fd,分別代表標準輸入、標準輸出、標準錯誤輸出。在上一篇文章中,使用重定向 2>/dev/null 就是把標準錯誤輸出重定向到位桶中去,不顯示出來。因為 0 1 2已經(jīng)被linux使用了,通常在程序中打開的fd,是從3開始的。但我們在判斷一個fd是否合法時,依然要使用>=0的判斷標準。

? fd的分配原則,是從小到大,找到第一個不用的進行分配

? 除了open之外, socket編程的socket()/accept()等函數(shù),也會返回一個fd值。

? 1)Linux系統(tǒng)下,所有進程允許打開的最大fd數(shù)量。查詢語句:

cat /proc/sys/fs/file-max

? 2)Linux系統(tǒng)下,所有進程已經(jīng)打開的fd數(shù)量及允許的最大數(shù)量。查詢語句:

cat /proc/sys/fs/file-nr

? 3)單個進程允許打開的最大fd數(shù)量.查詢語句:

ulimit -n

? 4)單個進程(例如進程id為5454)已經(jīng)打開的fd.查詢語句:

ls -l /proc/5454/fd/

更多有趣內容歡迎訪問我的個人博客

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. 硬鏈接和軟連接區(qū)別 硬連接-------指通過索引節(jié)點來進行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)...
    杰倫哎呦哎呦閱讀 2,536評論 0 2
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,725評論 0 5
  • 必備的理論基礎 1.操作系統(tǒng)作用: 隱藏丑陋復雜的硬件接口,提供良好的抽象接口。 管理調度進程,并將多個進程對硬件...
    drfung閱讀 3,773評論 0 5
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 6,001評論 0 9
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,877評論 0 3

友情鏈接更多精彩內容