#1 Le 18/01/2009, à 03:37
- nochka85
[Résolu] Language C - Afficher la conso CPU et la RAM ?
Bonjour,
Voilà mon soucis : J'ai 2 variables double nommées valeur1 et valeur2 dans lesquelles je souhaiterais mettre ma consommation CPU dans la première et ma consommation de RAM dans la seconde ...
Je pensais dans un premier temps utiliser une commande qui fonctionne très bien dans un terminal pour récupérer la charge CPU (ou du moins le "idle" ... donc ce qui reste comme CPU de libre) :
top -b -n2 -d0.5 | grep 'Cpu(s)'| awk '{print $5;}' | sed -e 's/%id,//' | sed -e 'N;s/^.*\n//'
... donc, j'ai mis çà dans mon programme C :
valeur1 = 100 - (double)system("top -b -n2 -d0.5 | grep 'Cpu(s)'| awk '{print $5;}' | sed -e 's/%id,//' | sed -e 'N;s/^.*\n//'");
Mais cela ne marche pas du tout
Je récupère ce message en sortie :
sed: -e expression n°1, caractère 7: commande `s' inachevée
et valeur1 est toujours égale à -156 !!
Bref, est-ce que quelqu'un pourrait :
1 - M'expliquer pourquoi cela ne marche pas ?
2 - Me dire ce que je pourrais utiliser pour récupérer ma conso CPU d'une manière plus "propre" que par un system(command) ? ... et par la même occasion, comment faire de même avec ma conso de RAM ?
Merci d'avance
Dernière modification par nochka85 (Le 18/01/2009, à 17:34)
Carte mère Asus P7P55D-E; Processeur Intel core i5 760; 8Go RAM PC3-10666; Geforce GTX 460 1024Mo sous Ubuntu 64bits 14.04
Eeepc 701 4G sous Linux Mint 10 Lxde
Site officiel de Glx-Dock/Cairo-Dock : http://www.glx-dock.org/
Dnd2share Unity - Partager vos images sur le forum par drag'n drop
Hors ligne
#2 Le 18/01/2009, à 11:19
- human enemy
Re : [Résolu] Language C - Afficher la conso CPU et la RAM ?
Regarde libgtop
http://library.gnome.org/devel/libgtop/stable/
c'est ce qui est utilisé par le Moniteur Système de GNOME entre autres.
<linux user>463160</linux user>
str = g_strdup_printf ("ubuntu user : %d",20328);
Hors ligne
#3 Le 18/01/2009, à 15:45
- nochka85
Re : [Résolu] Language C - Afficher la conso CPU et la RAM ?
Merci pour l'info
Par contre, j'ai un peu de mal à récupérer ce que je souhaite
Pour la conso RAM, pas de problème ... j'ai fais çà :
valeur2 = 100 * ( ((double)memory.user/(1024*1024)) / ((double)memory.total/(1024*1024)) );
... et le résultat est EXACTEMENT le même que celui de mon conky (par exemple)
Par contre, pour le CPU, je ne comprend pas trop comment utiliser les valeurs
Voilà un bout de code :
printf("CPU TYPE INFORMATIONS \n\n"
"Cpu Total : %ld \n"
"Cpu User : %ld \n"
"Cpu Nice : %ld \n"
"Cpu Sys : %ld \n"
"Cpu Idle : %ld \n"
"Cpu Frequences : %ld \n",
(unsigned long)cpu.total,
(unsigned long)cpu.user,
(unsigned long)cpu.nice,
(unsigned long)cpu.sys,
(unsigned long)cpu.idle,
(unsigned long)cpu.frequency);
... et voilà ce qu'il me renvoit :
CPU TYPE INFORMATIONS
Cpu Total : 1150783
Cpu User : 185744
Cpu Nice : 25838
Cpu Sys : 70807
Cpu Idle : 848664
Cpu Frequences : 100
... Bref, comment je peux utiliser ces valeurs pour mettre le pourcentage de ma charge CPU dans ma variable valeur1 ?
Carte mère Asus P7P55D-E; Processeur Intel core i5 760; 8Go RAM PC3-10666; Geforce GTX 460 1024Mo sous Ubuntu 64bits 14.04
Eeepc 701 4G sous Linux Mint 10 Lxde
Site officiel de Glx-Dock/Cairo-Dock : http://www.glx-dock.org/
Dnd2share Unity - Partager vos images sur le forum par drag'n drop
Hors ligne
#4 Le 18/01/2009, à 17:34
- nochka85
Re : [Résolu] Language C - Afficher la conso CPU et la RAM ?
Bon, en fait, j'ai trouvé :
valeur1 = (unsigned long) (100. - (cpu.idle - old_cpu_idle) / REFRESH); // REFRESH en secondes = temps entre chaque lecture
if (valeur1Next > 100)
{
valeur1Next = 100.;
}
old_cpu_idle = cpu.idle;
Carte mère Asus P7P55D-E; Processeur Intel core i5 760; 8Go RAM PC3-10666; Geforce GTX 460 1024Mo sous Ubuntu 64bits 14.04
Eeepc 701 4G sous Linux Mint 10 Lxde
Site officiel de Glx-Dock/Cairo-Dock : http://www.glx-dock.org/
Dnd2share Unity - Partager vos images sur le forum par drag'n drop
Hors ligne