日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux下文件描述符的介绍

發布時間:2025/3/15 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下文件描述符的介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux下文件描述符的介紹

(2012-10-02 16:01:56) 轉載▼
標簽:

描述符

調用

返回

進程

限制

it

分類:linux
當某個程序打開文件時,操作系統返回相應的文件描述符,程序為了處理該文件必須引用此描述符。所謂的文件描述符是一個低級的正整數。最前面的三個文件描述符(0,1,2)分別與標準輸入(stdin),標準輸出(stdout)和標準錯誤(stderr)對應。因此,函數scanf() 使用 stdin,而函數 printf() 使用 stdout。你可以用不同的文件描述符改寫默認的設置并重定向進程的I/O 到不同的文件。

1、首先說什么是文件描述符,它有什么作用?
文件描述符是一個簡單的整數,用以標明每一個被進程所打開的文件和socket。第一個打開的文件是0,第二個是1,依此類推。Unix操作系統通常給每個進程能打開的文件數量強加一個限制。更甚的是,unix 通常有一個系統級的限制。
因為squid 的工作方式,文件描述符的限制可能會極大的影響性能。當squid用完所有的文件描述符后,它不能接收用戶新的連接。也就是說,用完文件描述符導致拒絕服務。直到一部分當前請求完成,相應的文件和socket被關閉,squid 不能接收新請求。當squid發現文件描述符短缺時,它會發布警告。
在運行./configure 之前,檢查你的系統的文件描述符限制是否合適,能給你避免一些麻煩。大多數情況下,1024個文件描述符足夠了。非常忙的cache可能需要4096或更多。在配置文件描述符限制時,我推薦設置系統級限制的數量為每個進程限制的2倍。
2、怎么突破,具體方法?
先查看LINUX默認的文件描述符:
# ulimit -n
1024
我們用命令
ulimit -HSn 65536
來增大文件描述符,然后編譯安裝squid,
把ulimit -HSn 65536放到/etc/rc.d/rc.local讓啟動時加載。
以下為轉載:
Linux
在Linux 上配置文件描述符有點復雜。在編譯squid 之前,你必須編輯系統include 文件中的一個,然后執行一些shell命令。請首先編輯/usr/include/bits/types.h 文件,改變__FD_SETSIZE 的值:
#define _ _FD_SETSIZE 8192
下一步,使用這個命令增加內核文件描述符的限制:
# echo 8192 >; /proc/sys/fs/file-max
最后,增加進程文件描述符的限制,在你即將編譯squid 的同一個shell 里執行:
sh# ulimit -Hn 8192
該命令必須以root 運行,僅僅運行在bash shell。不必重啟機器。
使用這個技術,你必須在每一次系統啟動后執行上述echo 和ulimit 命令,或者至少在squid 啟動之前。假如你使用某個rc.d腳本來啟動squid,那是一個放置這些命令的好地方。
補充:?
??
文件描述符
是個很小的正整數,它是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。?
??文件描述符的優點:兼容POSIX標準,許多
Linux

UNIX
系統調用都依賴于它。
??文件描述符的缺點:不能移植到UNIX以外的系統上去,也不直觀。
? ? 基于文件描述符的輸入輸出函數:
??open:打開一個文件,并指定訪問該文件的方式,調用成功后返回一個文件描述符。
??creat:打開一個文件,如果該文件不存在,則創建它,調用成功后返回一個文件描述符。
??close:關閉文件,進程對文件所加的鎖全都被釋放。
??read:從文件描述符對應的文件中讀取數據,調用成功后返回讀出的字節數。
??write:向文件描述符對應的文件中寫入數據,調用成功后返回寫入的字節數。
??ftruncate:把文件描述符對應的文件縮短到指定的長度,調用成功后返回0。
??lseek:在文件描述符對應的文件里把文件指針設定到指定的位置,調用成功后返回新指針的位置。
??fsync:將所有已寫入文件中的數據真正寫到磁盤或其他下層設備上,調用成功后返回0。
??fstat:返回文件描述符對應的文件的相關信息,把結果保存在structstat中,調用成功后返回0。
??fchown:改變與打開文件相關聯的所有者和所有組,調用成功后返回0。
??fchmod:把文件描述符對應的文件的權限位改為指定的八進制模式,調用成功后返回0。
??flock:用于向文件描述符對應的文件施加建議性鎖,調用成功后返回0。
??fcntl:既能施加建議性鎖也能施加強制性鎖,能建立記錄鎖、讀取鎖和寫入鎖,調用成功后返回0。
??dup:復制文件描述符,返回沒使用的文件描述符中最小的編號。
??dup2:由用戶指定返回的文件描述符的值,用來重新打開或重定向一個文件描述符。
??select:同時從多個文件描述符讀取數據或向多個文件描述符寫入數據

總結

以上是生活随笔為你收集整理的linux下文件描述符的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。