Wie werden /proc/net-Dateien in Linux/Unix gefüllt?

Wie werden /proc/net-Dateien in Linux/Unix gefüllt?

Ich arbeite an einem Netzwerkmonitor für Linux, ohne Packet Sniffing. Ich plane, die Netzwerkstatistiken und zugehörige Daten aus /proc/netDateien zu lesen.

Ich weiß, dass dies /procder Einhängepunkt des Prozessdateisystems ist, das ein virtuelles Dateisystem ist, das die interne Datenstruktur des Kernels widerspiegelt.

Ich möchte wissen, wie es gefüllt ist und ob es möglich ist, die internen Komponenten des Betriebssystems direkt zu lesen.

Antwort1

/procwird „live“ vom Kernel gefüllt: Der Inhalt der Verzeichnisse und Dateien wird im laufenden Betrieb erstellt, wenn eine Anwendung darauf zugreift. Sie werden also kein Dienstprogramm finden, das sie füllt: Wenn Sie wissen möchten, wie die Dinge dorthin gelangen, müssen Sie dieKernelcodeoder derKernel-DokumentationIm Quellcode werden Einträge von verschiedenen Teilen desNetzwerkcode. Viele Einträge in /proc/netsind dokumentiert als Teil derNetzwerkdokumentation.

Das Lesen der internen Komponenten des Betriebssystems ist auf niedrigster Ebene möglich. Die einzige Möglichkeit, tiefer zu gehen, besteht darin, einen Kerneltreiber zu schreiben.

Eine weitere Möglichkeit, netzwerkbezogene Informationen abzurufen, ist über ioctlund getsockoptAufrufe von Sockets. Dies ist in C manchmal bequemer. Ich glaube, es gibt Informationen, die man mit einer Methode abrufen kann, mit der anderen jedoch nicht und umgekehrt, aber ich kenne die Details nicht.

verwandte Informationen