Retourner au contenu associé (entrée de forum : taille du "fichier" /proc/meminfo)
Posté par needs le 17 août 2015 à 19:21. En réponse au message taille du "fichier" /proc/meminfo. Évalué à 3. Dernière modification le 17 août 2015 à 19:26.
Exemple sans gestion d'erreur en C:
#include <stdlib.h> #include <stdio.h> #include <string.h> static int meminfo(char *key) { FILE *file; char _key[32]; int val; file = fopen("/proc/meminfo", "r"); while (fscanf(file, "%[^:]: %d%*[^\n]\n", _key, &val) == 2) if (!strcmp(key, _key)) return fclose(file), val; return fclose(file), -1; } int main(void) { printf("meminfo(SwapFree) = %d\n", meminfo("SwapFree")); printf("meminfo(Invalid_Key) = %d\n", meminfo("Invalid_Key")); return EXIT_SUCCESS; }
Compile avec gcc -o test -ansi -pedantic -Wall -Werror -O test.c.
gcc -o test -ansi -pedantic -Wall -Werror -O test.c
Exemple de résultat sur ma machine :
$ ./test meminfo(SwapFree) = 265068 meminfo(Invalid_Key) = -1
Voici un peu d'explications concernant le fscanf("%[^:]: %d %*[^\n]\n") :
fscanf("%[^:]: %d %*[^\n]\n")
"%[^:]:"
:
char*
"%*[^\n]\n"
\n
En C++ tu devrais pouvoir t'en sortir avec << et l'API de stream.h, mais je connais pas très bien comment ça fonctionne ;)
<<
stream.h
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# En C
Posté par needs . En réponse au message taille du "fichier" /proc/meminfo. Évalué à 3. Dernière modification le 17 août 2015 à 19:26.
Exemple sans gestion d'erreur en C:
Compile avec
gcc -o test -ansi -pedantic -Wall -Werror -O test.c.Exemple de résultat sur ma machine :
Voici un peu d'explications concernant le
fscanf("%[^:]: %d %*[^\n]\n"):"%[^:]:": Lis tant que tu ne trouves pas:et stockes ce que tu lis dans lechar*donné en paramètre. Enlève le:restant."%*[^\n]\n": Lis tant que tu ne trouves pas\net ignores ce que tu lis. Enlève le\nrestant. (En gros « vas à la ligne suivante »)En C++ tu devrais pouvoir t'en sortir avec
<<et l'API destream.h, mais je connais pas très bien comment ça fonctionne ;)