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

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

패킷 스니핑 없이 Linux용 네트워크 모니터를 개발 중입니다. /proc/net파일에서 네트워크 통계 및 관련 데이터를 읽을 계획입니다 .

나는 이것이 /proc커널의 내부 데이터 구조를 반영하는 가상 파일 시스템인 프로세스 파일 시스템의 마운트 지점이라는 것을 이해합니다.

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

답변1

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

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

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

관련 정보