Ich möchte einen Code schreiben, der für jedes Netzwerkgerät (z. B. eth0, lo, Master-Geräte) einige Statistiken und Konfigurationsdaten über dieses Gerät prüft.
Ich konnte die Statistikdaten (und die meisten Konfigurationsdaten) in / sys / class / net / ... finden, jedoch konnte ich keine C / C ++ - API oder irgendeinen Eintrag in procfs / sysfs finden, der die inet addr auflistete. Netzmaske und Gateway.
Einige Alternativen habe ich überprüft:
Da dieser Code für ein Produkt an meinem Arbeitsplatz gedacht ist, bei dem jede externe Bibliothek gründlich inspiziert wird (dh es wird ewig dauern, bis ich eine externe Bibliothek hinzufüge), bevorzuge ich Lösungen, die auf Linux nativer API und nicht auf externen Bibliotheken basieren .
Danke!
Das Ausführen von netstat über strace (in einer zufälligen Linux-Box) zeigt die folgende Abfolge von Aufrufen an:
%Vor% Also, das "Geheimnis" scheint zu sein, einen Socket zu erstellen, und dann ein paar ioctl()
Aufrufe auszuführen, um auf die aktuellen Informationen zuzugreifen.
Schauen Sie sich /usr/include/ifaddrs.h
an. Dafür gibt es eine GNU-spezifische API.
Tags und Links c c++ linux networking