#1 Le 20/04/2008, à 05:57
- MohammedBAh
comment peut on avoir la capacite de ram avec C
salut tout le monde;
j'ai cherche partout mais j'ai rien trouve :s j'espere que j'aurai un peu d'aide ici voila je veux faire un programme C qui me donne la taille de mon disque dure et me liste tout les partitions et pour finir il me donne la taille du RAM et la memoire occupe par le systeme
#2 Le 20/04/2008, à 06:32
- Compte anonymisé
Re : comment peut on avoir la capacite de ram avec C
Salut
Je ne sais pas si c'est ce que tu cherches, mais tu peux utiliser la fonction system et récupérer les infos via les commandes :
free
fdisk -l
etc..
@+
#3 Le 20/04/2008, à 06:52
- marc_qui
Re : comment peut on avoir la capacite de ram avec C
tres bonne reponse c'est effectivement plus simple de passer par system sinon tu vas te prendre la tete
Dernière modification par marc_qui (Le 20/04/2008, à 06:52)
Hors ligne
#4 Le 20/04/2008, à 08:46
- human enemy
Re : comment peut on avoir la capacite de ram avec C
Sinon il y a *libgtop*
"LibGTop is a library to get system specific data such as CPU and Memory Usage and information about running Processes..."
Pour la mémoire tu peux prendre ce bout de code :
/* mises à jour mémoire */
glibtop_mem mem;
glibtop_get_mem (&mem);
g_return_if_fail ((mem.flags & needed_mem_flags) == needed_mem_flags);
atrium->serveur_memoiretotale = mem.total;
atrium->serveur_memoirelibre = mem.total-mem.user;
usr = rint (100 * (float)(mem.total-mem.user) / mem.total);
atrium->serveur_memoirelibreratio = usr;
<linux user>463160</linux user>
str = g_strdup_printf ("ubuntu user : %d",20328);
Hors ligne
#5 Le 20/04/2008, à 08:46
- geenux
Re : comment peut on avoir la capacite de ram avec C
Dans ces cas là, autant faire un script shell quoi...
Hors ligne
#6 Le 20/04/2008, à 11:39
- rniamo
Re : comment peut on avoir la capacite de ram avec C
pour windows tu as des fonction qui te donne les réponse, pour linux des fichiers :
/proc/meminfo.
Pour voir ce qu'il y a dedans : cat /proc/meminfo
Aprés en C tu ouvre ce fichier (en super utilisateur!), tu li chaque ligne (fgets()) et recherche un des mot clé qui t'intéresse (strstr() je crois) : "MemTotal:" par exemple.
Tu peut ensuite avoir l'info en kB (un petit atoi() pour la conversion).
voili voilou
edit : tu peux regarder les sources de conky :
void update_meminfo(void)
{
FILE *meminfo_fp;
static int rep = 0;
/* unsigned int a; */
char buf[256];
info.mem = info.memmax = info.swap = info.swapmax = info.bufmem =
info.buffers = info.cached = 0;
if (!(meminfo_fp = open_file("/proc/meminfo", &rep))) {
return;
}
while (!feof(meminfo_fp)) {
if (fgets(buf, 255, meminfo_fp) == NULL) {
break;
}
if (strncmp(buf, "MemTotal:", 9) == 0) {
sscanf(buf, "%*s %llu", &info.memmax);
} else if (strncmp(buf, "MemFree:", 8) == 0) {
sscanf(buf, "%*s %llu", &info.mem);
} else if (strncmp(buf, "SwapTotal:", 10) == 0) {
sscanf(buf, "%*s %llu", &info.swapmax);
} else if (strncmp(buf, "SwapFree:", 9) == 0) {
sscanf(buf, "%*s %llu", &info.swap);
} else if (strncmp(buf, "Buffers:", 8) == 0) {
sscanf(buf, "%*s %llu", &info.buffers);
} else if (strncmp(buf, "Cached:", 7) == 0) {
sscanf(buf, "%*s %llu", &info.cached);
}
}
info.mem = info.memmax - info.mem;
info.swap = info.swapmax - info.swap;
info.bufmem = info.cached + info.buffers;
info.mask |= (1 << INFO_MEM) | (1 << INFO_BUFFERS);
fclose(meminfo_fp);
}
Pour le disque dur je ne connais pas le fichier, peut être proc/diskstats
Dernière modification par rniamo (Le 20/04/2008, à 12:02)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#7 Le 20/04/2008, à 18:21
- MohammedBAh
Re : comment peut on avoir la capacite de ram avec C
merci pour les reponses je vais les essai et esque vous pouvez me donne un lien de tutoriel pour script shell merci infiniment
#8 Le 20/04/2008, à 21:25
- MohammedBAh
Re : comment peut on avoir la capacite de ram avec C
pour windows tu as des fonction qui te donne les réponse, pour linux des fichiers :
/proc/meminfo.
Pour voir ce qu'il y a dedans : cat /proc/meminfo
Aprés en C tu ouvre ce fichier (en super utilisateur!), tu li chaque ligne (fgets()) et recherche un des mot clé qui t'intéresse (strstr() je crois) : "MemTotal:" par exemple.
Tu peut ensuite avoir l'info en kB (un petit atoi() pour la conversion).
voili voilou
edit : tu peux regarder les sources de conky :
void update_meminfo(void) { FILE *meminfo_fp; static int rep = 0; /* unsigned int a; */ char buf[256]; info.mem = info.memmax = info.swap = info.swapmax = info.bufmem = info.buffers = info.cached = 0; if (!(meminfo_fp = open_file("/proc/meminfo", &rep))) { return; } while (!feof(meminfo_fp)) { if (fgets(buf, 255, meminfo_fp) == NULL) { break; } if (strncmp(buf, "MemTotal:", 9) == 0) { sscanf(buf, "%*s %llu", &info.memmax); } else if (strncmp(buf, "MemFree:", 8) == 0) { sscanf(buf, "%*s %llu", &info.mem); } else if (strncmp(buf, "SwapTotal:", 10) == 0) { sscanf(buf, "%*s %llu", &info.swapmax); } else if (strncmp(buf, "SwapFree:", 9) == 0) { sscanf(buf, "%*s %llu", &info.swap); } else if (strncmp(buf, "Buffers:", 8) == 0) { sscanf(buf, "%*s %llu", &info.buffers); } else if (strncmp(buf, "Cached:", 7) == 0) { sscanf(buf, "%*s %llu", &info.cached); } } info.mem = info.memmax - info.mem; info.swap = info.swapmax - info.swap; info.bufmem = info.cached + info.buffers; info.mask |= (1 << INFO_MEM) | (1 << INFO_BUFFERS); fclose(meminfo_fp); }
Pour le disque dur je ne connais pas le fichier, peut être proc/diskstats
merci pour la reponse peut tu m'explique un peu
#9 Le 21/04/2008, à 14:37
- Karl_le_rouge
Re : comment peut on avoir la capacite de ram avec C
Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.
Hors ligne
#10 Le 21/04/2008, à 16:15
- MohammedBAh
Re : comment peut on avoir la capacite de ram avec C
Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.
alors tu me coneille quoi ?
#11 Le 21/04/2008, à 17:10
- nicolas.sitbon
Re : comment peut on avoir la capacite de ram avec C
Hors ligne
#12 Le 21/04/2008, à 18:23
- rniamo
Re : comment peut on avoir la capacite de ram avec C
je t'ai passé les sources de conky parce que analyser vite fait un petit fichier comme /proc/meminfo me semble assez simple mais si ceci t'es complexe, suit les conseils précédents : http://www.developpez.net/forums/showthread.php?t=264
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#13 Le 22/04/2008, à 09:10
- Karl_le_rouge
Re : comment peut on avoir la capacite de ram avec C
Karl_le_rouge a écrit :Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.
alors tu me coneille quoi ?
Au hasard, je dirais fork + exec
Hors ligne
#14 Le 22/04/2008, à 09:14
- nicolas.sitbon
Re : comment peut on avoir la capacite de ram avec C
MohammedBAh a écrit :Karl_le_rouge a écrit :Oubliez la fonction system(), elle s*cks grave, un fork + exec c'est à peine plus compliqué.
alors tu me coneille quoi ?
Au hasard, je dirais fork + exec
étant donné qu'il veut avoir le résultat des commandes, c'est plutôt popen() qu'il faut utiliser, de plus c'est vraiment moche de faire fork()+exec().
Hors ligne
#15 Le 22/04/2008, à 09:46
- \\Ouranos//
Re : comment peut on avoir la capacite de ram avec C
tu peux aussi taper "tagada keskichof" en ligne de commande...
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne