Linux
如何在 c 程序中使用 libprocps 獲取打開的文件描述符/句柄
我正在嘗試為我的 IOT 設備創建性能顯示。該設備使用 Linux,所以我想使用 C 程序以程式方式獲取文件句柄的數量。目前我正在使用 libprocps API 來獲取所有其他數據。現在我想獲取整個 IOT 設備的打開文件描述符/句柄。
ls /proc/
$$ pid $$/fd |wc -l 給出文件的數量。但是我需要來自 C 程序中的任何 API 的這些數據。哪個變數保存 proc 中的 fdinfo
您無法從 獲取此資訊
libprocps
,但可以通過計算目錄中的連結數(這相當於您的ls /proc/[pid]/fd | wc -l
命令)來獲取每個程序的資訊:#include <dirent.h> ... int fds = 0; DIR * dirp; struct dirent * entry; dirp = opendir("/proc/.../fd"); /* You need to build the path */ while ((entry = readdir(dirp)) != NULL) { if (entry->d_type == DT_LNK) { fds++; } } closedir(dirp);
您需要在上面添加錯誤處理。
如果要獲取分配的文件句柄的總數,請查看
/proc/sys/fs/file-nr
:第一個數字是分配的文件句柄的數量。