[Résolu] [C][Debian] Obtenir infos sur eth0 ?

Bonjour à tous, :mrgreen:

je suis à la recherche d’une fonction (ou au moins d’une piste) permettant en C d’obtenir des infos sur la carte réseau principale (eth0) … un peu à la manière de ifconfig mais dans un programme en C … je ne peux pas appeler mon programme avec ifconfig sur stdin car mon programme sera un daemon …

Je cherche les volumes envoyés et reçus ( Tx / Rx ) afin de determiner le débit à l’instant ‘t’…

Merci d’avance. :wink:

Le fichier /proc/net/dev.

ça a l’air parfait, merci ! :stuck_out_tongue:

C’est chaud ton truc.
Je feuillette un livre et ça m’a l’air de la programmation driver/noyau.

Mais il y a peut être une autre solution ce serait de passer par /proc du coup tu pourras même faire ton programme en script shell

Je me demande si tu ne peux pas faire aussi avec libpcap

Merci, mais je crois que le fichier “/proc/net/dev” répond à mon besoin nickel chrome ! :stuck_out_tongue:

Pourrait il y avoir un potentiel problème en accédant ( en lecture ) fréquement à /proc/net/dev ? :neutral_face:

en lecture je ne pense pas à priori. Fais bien attention à ne pas accéder en écriture par mégarde et avec des droits suffisants pour pouvoir effectivement écrire par contre, ça ça pourrait poser des problèmes par contre (mais je ne sais pas de quel ordre).
Pour ce qui est de la fréquence des accès : c’est l’appel système d’ouverture du fichier qui va te couter dans l’histoire, la lecture elle même étant limite “gratos” en comparaison. Donc il faut prendre ça en compte. M’enfin le plus gros risque, selon moi, serait de ralentir ta machine chérie et pour ca … il faudrait un sacré paquet d’appels consécutifs !

/proc est un système de fichiers virtuels, ce n’est pas comme accéder à un fichier sur le disque dur. La lecture du pseudo-fichier /proc/net/dev fait appel à une fonction callback de lecture qui récupère les informations nécessaires et les retourne depuis le kernel.

http://www.ibm.com/developerworks/library/l-proc.html

[quote=“thialme”]/proc est un système de fichiers virtuels, ce n’est pas comme accéder à un fichier sur le disque dur. La lecture du pseudo-fichier /proc/net/dev fait appel à une fonction callback de lecture qui récupère les informations nécessaires et les retourne depuis le kernel.
http://www.ibm.com/developerworks/library/l-proc.html[/quote]
Whaoo :smt007 … Super merci pour cette info, c’est génial Linux !!!
( Et oui, à la base, je suis un dev Windows … :blush: )

Merci aussi pour le lien :smt003 …

@++
Seb

Juste pour dire que c’est OK, ça marche impec ! … Me reste plus qu’a faire la comm socket avec le client coté Windows et ce sera TOP moumoute !

… donc re-merci à tous ( special thanks pour thialme 8) )

J’ai juste été un poil surpris que le volume des Rx soit collé au ‘eth0’ quand ça devient trop long :mrgreen:

PS: vous avez pas un autre fichier /proc/ où je pourrais trouver la liste des users loggés par hasard ? :wink: … Toujours pour mon daemon en C, donc pas de script svp …

I :smt007 Linux

Il faudrait démonter le source de la commande who qui ne doit pas être énorme…
Je n’ai rien vu dans /proc qui ressemble à ça (et il me semble que ça relève plus de l’OS que du noyau).

Ah oui, c’est vrai qu’en plus on peut avoir les sources des programmes !!!

Je vais aller jeter un oeil sur les sources de who en effet … merci.

C’est trop bon tout ça … :smt007
( ça fait quand même bizarre toute cette liberté quand on arrive sur la banquise :smt003 )

quote="Seb.26"
ça fait quand même bizarre toute cette liberté quand on arrive sur la banquise :smt003
(…)[/quote] Et oui, et comme dans la vraie vie, il y en a à qui ça fait même peur de ne plus suivre des rails.

:blush: … j’arrive pas à trouver les sources de who …

J4ai trouvé des trucs sur kernel.org/pub/linux/ … mais y’a pleins de choses …

dimm@mambo:/tmp$ dpkg -S /usr/bin/who coreutils: /usr/bin/who dimm@mambo:/tmp$ apt-get source coreutils

Soit man utmp

[quote=“Seb.26”]PS: vous avez pas un autre fichier /proc/ où je pourrais trouver la liste des users loggés par hasard ? :wink: … Toujours pour mon daemon en C, donc pas de script svp …

I :smt007 Linux[/quote]
salut Seb.26 regardes là —>whowatch la source de whowatch est en haut à gauche de la page :smt002

8)

@dimm : Merci, j’ai pas compris ta réponse, mais je vais essayer de taper tes commandes, je verrais bien ce que ça donne … :blush:

@thialme : Merci ( encore ), je vais lire ça en détail, et voir ce que j’en tire.

@rodmov : Merci, je regarderais là aussi !

énorme … méga-merci les gars, c’est super cool de votre part de répondre à mes questions de GROS noob … il fait chaud sur la banquise en fait … :mrgreen:

Je vais essayer de me débrouiller un peu tout seul maintenant que j’ai de bonnes pistes.

:smt024

[quote=“Seb.26”]8)

@dimm : Merci, j’ai pas compris ta réponse, mais je vais essayer de taper tes commandes, je verrais bien ce que ça donne … :blush: [/quote]Ce qu’il te faut pour avoir les sources de ce que tu veux sous debian (aprés joue du man pour avoir plus de détails).[quote=“Seb.26”]@thialme : Merci ( encore ), je vais lire ça en détail, et voir ce que j’en tire.
(…)[/quote]Il triche: il contourne :smt003 c’est un vrai codeur, lui.

Ce n’est pas parce que les rosbifs n’ont pas de vocabulaire qu’il faut confondre pinguin et manchot :laughing: