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