Il semble que ma question ne soit pas assez claire (ce qu'en fait je comprend, c'est juste un bloc de texte... mea culpa!), donc voici quelques précisions/reformulations.
Je cherche à savoir s'il est possible de connaître la taille des éléments de /proc par programmation C (C++ en fait, mais l'accès à ces ressources se fait de la même façon de toute manière).
À l'heure actuelle, mon code (qui fonctionne) procède en allouant à la compilation un buffer de taille fixe (je vous ai menti en plus, vue la constante je n'ai même pas utilisé la taille exacte de /proc/meminfo...) déterminé de façon empirique pour pouvoir tout contenir.
L'inconvénient de cette façon de faire est que si un jour je veux accéder à d'autres informations de /proc (ou soyons fous, de /sys?) il me faudra alors effectuer la mesure manuellement afin de déterminer la taille à allouer au buffer sur lequel je vais travailler.
Pire, si je serre de trop près la taille réelle du fichier, un jour ça pètera et on ne pourra savoir pourquoi qu'en regardant dans le code (même si pour le moment il n'y a que 200LoC, rien ne prouve que ça restera trivial dans le temps). Et si on voulait changer de système cible (genre, pour aller sur du BSD), idem, gros risque que ça casse (ok, les noms des variables diffèrent certainement de toute façon, mais devoir ajuster des textes à la main me suffit, pourquoi y ajouter des tailles de buffer?)
La solution évidente est de lire progressivement le fichier. J'ai testé, ça ne marche pas (franchement, ça m'a valu pas mal d'incompréhension, je n'ai pas toujours l'esprit très rapide et je ne me suis résolu qu'a contre-cœur d'utiliser la même méthode que le source de xosview), la raison semblant être que dans le cas de ces pseudos-fichiers, aucune information de position du curseur n'est stockée (ou mise à jour, pour ce que ça change).
# Petites précisions.
Posté par freem . En réponse au message taille du "fichier" /proc/meminfo. Évalué à 3.
Il semble que ma question ne soit pas assez claire (ce qu'en fait je comprend, c'est juste un bloc de texte... mea culpa!), donc voici quelques précisions/reformulations.
Je cherche à savoir s'il est possible de connaître la taille des éléments de /proc par programmation C (C++ en fait, mais l'accès à ces ressources se fait de la même façon de toute manière).
À l'heure actuelle, mon code (qui fonctionne) procède en allouant à la compilation un buffer de taille fixe (je vous ai menti en plus, vue la constante je n'ai même pas utilisé la taille exacte de /proc/meminfo...) déterminé de façon empirique pour pouvoir tout contenir.
L'inconvénient de cette façon de faire est que si un jour je veux accéder à d'autres informations de /proc (ou soyons fous, de /sys?) il me faudra alors effectuer la mesure manuellement afin de déterminer la taille à allouer au buffer sur lequel je vais travailler.
Pire, si je serre de trop près la taille réelle du fichier, un jour ça pètera et on ne pourra savoir pourquoi qu'en regardant dans le code (même si pour le moment il n'y a que 200LoC, rien ne prouve que ça restera trivial dans le temps). Et si on voulait changer de système cible (genre, pour aller sur du BSD), idem, gros risque que ça casse (ok, les noms des variables diffèrent certainement de toute façon, mais devoir ajuster des textes à la main me suffit, pourquoi y ajouter des tailles de buffer?)
La solution évidente est de lire progressivement le fichier. J'ai testé, ça ne marche pas (franchement, ça m'a valu pas mal d'incompréhension, je n'ai pas toujours l'esprit très rapide et je ne me suis résolu qu'a contre-cœur d'utiliser la même méthode que le source de xosview), la raison semblant être que dans le cas de ces pseudos-fichiers, aucune information de position du curseur n'est stockée (ou mise à jour, pour ce que ça change).
En espérant que ce soit plus clair...