info utilisation memoire, processeur et swap [résolu] [C][Gnu] - C - Programmation
Marsh Posté le 08-11-2011 à 22:56:34
Pour connaître le processus courant tu as la fonction 'getpid' qui te renvoie le pid.
Après, ça dépend de ce que tu veux récupérer comme infos.
Marsh Posté le 08-11-2011 à 23:08:42
Pouet_forever a écrit : Pour connaître le processus courant tu as la fonction 'getpid' qui te renvoie le pid. |
En fait, je me suis embrouiller en retombant sur terre.
Je voudrais connaître l'utilisation mémoire totale de la bécane, l'utilisation processeur total de la bécane, et la priorité du processus courant mais pas ce programme, c'est à dire que j'aimerais, je crois, tirer les info de l'ordonnanceur pour avoir le ou les (sur un multi) processus en cours.
Edit et le swap total.
edit Dans /proc/meminfo, j'ai le total et le free mémoire et le swap.
La mémoire, c'est réglé.
Marsh Posté le 09-11-2011 à 01:37:30
Bonsoir, j'ai un problème de pourcentage, j'espère que vous pourez m'aider,
Voici mon code dans le quel je calcul, mem_used, un float pour représenter le pourcentage d'utilisation mémoire avec mem_free et mem_total deux float pour représenter deux entier sous forme de chaîne de caractères.
Le problème, c'est qu'au lieu d'avoir dans les 30%, j'ai 77.32.
Si vous pouviez jeter un Oeil.
Code :
|
Marsh Posté le 09-11-2011 à 04:15:30
J'ai résoiut tous mes problèmes pour le moment, en faisant un appel à ps.
Code :
|
Du coup je récupère la mémoire utiliser aussi comme ça.
Marsh Posté le 11-11-2011 à 10:11:34
Tamahome a écrit : Du coup c'est vachement GNU |
Bonjour, Si tu as une autre solution...
Pour la mémoire, j'utilise /proc/meminfo en fait, parce que les opération ci-dessus me semblait un peu lourde.
Mais j'ai pas trouvé ou aller chercher les info pour l'utilisation cpu.
Marsh Posté le 15-11-2011 à 21:50:53
J'ai pas dit que j'avais une autre solution, j'ai juste dit que le titre est foireux. C'est pas GNU, ni Posix (qui est pourtant gaulois) ton truc
Au mieux, écrit ça en assembleur, mais ça sera dépendant de ton proc.
Marsh Posté le 16-11-2011 à 08:28:16
Tamahome a écrit : J'ai pas dit que j'avais une autre solution, j'ai juste dit que le titre est foireux. C'est pas GNU, ni Posix (qui est pourtant gaulois) ton truc |
Pourquoi c'est pas Gnu mon truc ?
Marsh Posté le 16-11-2011 à 15:37:10
Si c'est pas Gnu, alors je peux demander comment faire la même chose sur MS Windows !
Marsh Posté le 16-11-2011 à 16:33:49
C'est faisable, mais pas simple du tout.
Vas voir ce code par exemple: http://www.codeproject.com/KB/thre [...] Usage.aspx
A+,
Marsh Posté le 16-11-2011 à 16:59:07
gilou a écrit : C'est faisable, mais pas simple du tout. |
Merci Gilou, je vais le faire, mais avec Ada pour le moment.
Mais ça vas je crois que je vais y arriver.
Marsh Posté le 16-11-2011 à 17:07:19
Arff j'en sais rien du langage à utiliser en fait... Avec Ada la fonction GetSystemTime n'est pas la même que celle présentée dans la documentation. Ou j'ai pas compris.
Comme je connais que très peu le langage C, j'hésite.
Marsh Posté le 16-11-2011 à 21:29:09
J'aurais besoin éventuellement d'un petit coup de pouce ici encore.
Je cherche comment appliquer une soustration soit des deux FILETIME soit de deus SYSTEMTIME.
J'ai fait ceci. Mais reste le problème des soustraction.
Code :
|
Si c'est possible,...
Marsh Posté le 16-11-2011 à 22:52:35
J'ai suivi Internet et je suis tombé sur une solution mais j'arrive pas à compiler un truc.
Code :
|
J'obtien les erreur suivante à l'appel de SytemTimeToFileTime... Je sais pas pourquoi....
E:\LCDware>gcc -c -o monito.o monitor.c |
Edit : Ca y est, J'ai viré typedef et ça remarche. Merci de votre patience.
Marsh Posté le 16-11-2011 à 23:11:30
C'est pas le I majuscule de SystemTImeToFileTime qui fait ça?
>> hDLL = LoadLibrary("kernel32" ); // Chargement dynamique de la DLL en mémoire
Inutile, le kernel est toujours en mémoire, on peut appeler directement la fonction.
Bref, tu peux faire
FILETIME last_userTime;
FILETIME last_kernelTime;
FILETIME last_idleTime;
BOOL res_alpha = GetSystemTimes( &last_idleTime, &last_kernelTime, &last_userTime );
FILETIME idleTime;
FILETIME kernelTime;
FILETIME userTime;
BOOL res_beta = GetSystemTimes( &idleTime, &kernelTime, &userTime );
et virer le code qui est avant
A+,
Marsh Posté le 17-11-2011 à 00:00:30
Merci Gilou, Ca marche pas... pour une undefined reference to GetSystemTimes.
Si non ça marche. !
Marsh Posté le 17-11-2011 à 02:53:09
Un probleme de flag préprocesseur ou de vieille version de windows.h
Recopies son prototype depuis winbase.h et ça devrait rouler.
A+,
Marsh Posté le 17-11-2011 à 14:17:26
Bonjour Gilou !
Tu voudrais que je copie le contenu de winbase.h dans windows.h ?
Quel intérêt puisque j'inclue déjà les deux et ça marche pas ?
Marsh Posté le 17-11-2011 à 14:58:01
Non, ce n'est pas ça.
Tu dois avoir le prototype de GetSystemTimes dans winbase.h, et pour une raison liée sans doute a des directives de preprocesseur, il n'est pas vu quand tu compiles le code, d'ou le "undefined reference to GetSystemTimes" je pense.
Donc en rajoutant le bon proto directement dans ton code, ça devrait coller.
A+,
Marsh Posté le 17-11-2011 à 15:13:45
J'ai un message de Windows à l'exécution qui me dit que le procédure GetSystemTimes est introuvable dans le bibliothèque de liaison dynamique de kernel32.dll.
J'ai copier dans mon code le prototype de GetSystemTimes soit :
Code :
|
Marsh Posté le 17-11-2011 à 16:29:46
Euh, mais ça,ça ne se produit que si tu n'as pas au moins Windows XP SP2 d'installé!
Tu compiles sous quel version de Windows
A+,
Marsh Posté le 17-11-2011 à 16:32:09
XP SP1
Je vais installer SP2 pour voir, fallait le faire façon.
Marsh Posté le 17-11-2011 à 16:36:49
Ah ben c'est pour ça que ça marche pas, c'est pas dans kernel32 avant le SP2.
Une fois en SP2, tu n'auras probablement plus besoin du proto ajouté.
Notes que j'ai trouvé un autre code, similaire, pour l'usage du CPU, ici: http://www.philosophicalgeek.com/2 [...] s-c-and-c/
A+,
Marsh Posté le 17-11-2011 à 16:57:29
gilou a écrit : Ah ben c'est pour ça que ça marche pas, c'est pas dans kernel32 avant le SP2. |
Ca marche avec le prototype de GetSystemTimes dans mon main file.
gilou a écrit : |
Merci gilou.
J'ai jeté un coup d'oeil, mais c'est de C++, c'est plus plus tordu que du C.
Déjà que le C pour moi....
J'y rejeterais un coup d'oeil plus tard.
Déjà avec le SP2, j'ai pas le même résultat qu'en SP1.
Marsh Posté le 17-11-2011 à 17:27:05
Et ça marche pas en fait, ma solution pour Windows.
Parfois j'ai une division par zéro, parfois j'ai -6.0, 6.0, ou encore 100.0, mais c'est pas bon.
Marsh Posté le 17-11-2011 à 17:55:19
Avec un petit usleep(500000); entre les deux appel à GetSystemTimes, ça a l'air de donner un peu mieux.
Marsh Posté le 08-11-2011 à 22:54:26
Bonjour,
Je voudrais récupéré les info comme si je faisais un top ou un ps aux, sur le processus courant.
Dans un premier temps, je voudrais savoir comment connaître le processus courant.
Quel bibliothèque utiliser ?
Vous pouvez m'aider ?
Message édité par Profil supprimé le 09-11-2011 à 04:17:50