因為linux程式設計中一切皆是檔案,如socket,文字檔案,db,flash,等等,尤其是網路程式設計中server端的socket,經過三次握手以後,經常忘記處理socket,最終導致整個程序的檔案描述符耗盡;在linux寫程式中經常遇到fd忘記close的情況,也會出現檔案描述符耗盡的情況,如下手段可以幫助大家檢視檔案描述符是否忘記close。
1)linux系統下,所有程序允許開啟的最大fd數量。查詢語句:
/proc/sys/fs/file-max
2)linux系統下,所有程序已經開啟的fd數量及允許的最大數量。查詢語句:
[root@localhost logs]# cat /proc/sys/fs/file-nr
2112
02100000
已分配檔案控制代碼的數目
已使用檔案控制代碼的數目
檔案控制代碼的最大數目
已分配檔案控制代碼的數目:如果忘記close檔案描述符,這個值會不斷變大,所以在做壓力測試的時候,要特別注意這種情況。
使用c語言獲取
#include typedef struct
system_info_fd_t;
static void ptcp_server_get_sys_fd_info(system_info_fd_t *info_fd)
3)單個程序允許開啟的最大fd數量.查詢語句:
ulimit -n
4)單個程序(例如通過ps -aux檢視到關心的程序id為655)已經開啟的fd.查詢語句:
ls -l /proc/655/fd/ | wc -l 可以檢視到fd不斷增大,這樣就可以確認是那個程序忘記close 檔案描述
linux檔案描述符檢視與調整
1 檔案描述符總量與使用量cat proc sys fs file nr 第一列 為已分配的fd數量 第二列 為已分配但尚未使用的fd數量 第三列 為系統可用的最大fd數量2 獲取程序開啟的檔案描述符ll proc 3253 fd 統計數量用 ll proc 3253 fd wc l3 檢視檔案描述...
Linux 檢視檔案描述符相關 資訊
1.檢視系統當前使用的檔案描述符個數 root imx6qsabresd cat proc sys fs file nr 864 0 69474 第一列 1216 為已分配的fd數量 第二列 0 為已分配但尚未使用的fd數量 第三列197787 為系統可用的最大fd數量 已用fd數量 為已分配的fd...
linux檔案描述符
本文介紹了檔案描述符,1 首先說什麼是檔案描述符,它有什麼作用?檔案描述符是乙個簡單的整數,用以標明每乙個被程序所開啟的檔案和socket。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案,並指定訪問該檔案的方式,呼叫成功後返回乙個檔案描述符。creat 開啟乙個檔案,如果該檔案不存在,則建立它...