Linux/Unix에서는 /proc/net 파일이 어떻게 채워지나요?

Linux/Unix에서는 /proc/net 파일이 어떻게 채워지나요?

저는 패킷 스니핑 없이 Linux용 네트워크 모니터 작업을 하고 있습니다. 파일 에서 네트워크 통계 및 관련 데이터를 읽을 계획입니다 /proc/net.

/proc커널 내부 데이터 구조를 반영하는 가상 파일 시스템인 프로세스 파일 시스템의 마운트 지점인 것으로 알고 있습니다 .

나는 그것이 어떻게 채워지고 OS 내부를 직접 읽을 수 있는지 알고 싶습니다.

답변1

/proc커널에 의해 "라이브"로 채워집니다. 디렉터리와 파일의 내용은 응용 프로그램이 액세스할 때 즉시 구축됩니다. 따라서 이를 채우는 유틸리티를 찾을 수 없습니다. 항목이 어떻게 거기에 도달하는지 알고 싶다면 다음을 읽어야 합니다.커널 코드아니면 그커널 문서. 소스 코드에서 항목은 다양한 부분에 의해 생성됩니다.네트워킹 코드. 의 많은 항목 /proc/net네트워킹 문서.

이는 OS 내부를 읽는 만큼 낮은 수준입니다. 더 깊이 들어가는 유일한 방법은 커널 드라이버를 작성하는 것입니다.

네트워킹 관련 정보를 검색하는 또 다른 방법은 소켓을 통한 ioctl호출 입니다 getsockopt. 이것은 때때로 C에서 더 편리합니다. 한 가지 방법으로는 얻을 수 있지만 다른 방법으로는 얻을 수 없고 그 반대의 경우도 있는 것 같은데 자세한 내용은 모르겠습니다.

관련 정보