C 프로그램에서 libprocps를 사용하여 열린 파일 설명자/핸들을 얻는 방법

C 프로그램에서 libprocps를 사용하여 열린 파일 설명자/핸들을 얻는 방법

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: 첫 번째 숫자는 할당된 파일 핸들의 개수입니다.

관련 정보