IoT 장치에 대한 성능 디스플레이를 만들려고 합니다. 장치는 Linux를 사용하므로 C 프로그램을 사용하여 프로그래밍 방식으로 파일 핸들 수를 가져오고 싶습니다. 현재 저는 다른 모든 데이터를 얻기 위해 libprocps API를 사용하고 있습니다. 이제 전체 IoT 장치의 열린 파일 설명자/핸들을 가져오고 싶습니다.
ls /proc/[pid]/fd |wc -l 파일 수를 제공합니다. 하지만 C 프로그램의 모든 API에서 이 데이터를 가져와야 합니다. proc에서 fdinfo를 보유하는 변수는 무엇입니까?
답변1
에서는 이 정보를 얻을 수 없지만 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
: 첫 번째 숫자는 할당된 파일 핸들의 개수입니다.