您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux文件句柄是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Linux文件句柄是什么”文章能幫助大家解決問題。
在文件I/O中,要從一個文件讀取數據,應用程序首先要調用操作系統函數并傳送文件名,并選一個到該文件的路徑來打開文件。該函數取回一個順序號,即文件句柄(file handle),該文件句柄對于打開的文件是唯一的識別依據。要從文件中讀取一塊數據,應用程序需要調用函數ReadFile,并將文件句柄在內存中的地址和要拷貝的字節數傳送給操作系統。
Linux句柄
Linux中所有的事物或資源都是以文件的形式存在,比如消息、共享內存、連接等,句柄可以理解為指向這些文件的指針。
對于這些句柄,Linux是有數量限制的,單個進程默認可以打開的句柄數上限,可以用以下命令來查看:
$ ulimit -a
查看某個進程的句柄數上限,命令是:
$ ulimit -a PID
單個進程句柄數的修改(系統重啟后會恢復默認值)
$ ulimit -n 句柄數
永久修改單個進程句柄數
$ cat >> /etc/security/limits.conf
說明:修改完成后,需要重新打開終端,使用 ulimit -a 查看句柄數
查詢系統中指定進程占用的句柄數
$ lsof -n | grep [PID|進程名]| wc -l
查詢系系統中進程占用的句柄數
$ lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | more
文件類型有以下幾種: DIR:表示目錄。 CHR:表示字符類型。 BLK:塊設備類型。 UNIX: UNIX 域套接字。 FIFO:先進先出 (FIFO) 隊列。 IPv4:網際協議 (IP) 套接字。
LINUX對能夠打開的文件句柄的數量做了限制。限制是分為三個層面:系統層面,用戶層面和進程層面。 如果某個進程打開的文件句柄超過限制,再打開文件就會報錯。因此,在編程時,如果進程要占用大量文件句柄的話, 就要看看是否要調整最大可打開的文件句柄數,同時也要注意close釋放掉不用的文件句柄。
系統層面
$ cat /proc/sys/fs/file-max
用戶層面
$ ulimit -n
進程層面
$ cat /proc/PID/limits
關于“Linux文件句柄是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。