Je te propose une méthode un peu "bourrin", pas propre, pas politiquement correcte...
Mais qui te permettra peut etre d'avancer un peu dans ton projet jusqu'à ce que tu trouves une meilleure solution.
A moins d'avoir loupé quelque chose, ton programme tournera sous linux.
Tu peux essayer quelque chose du genre : ( code inexact, je "pisse" le code, a toi d'adapter )
Code :
- #include <linux/fork.h>
- #include <fstream.h>
- int iForkReturn;
- void main(void) {
- vector <String> vsTableProcess;
- iForkReturn=fork();
- String buffer;
-
- if (!iForkReturn) {
- ifstream ifsPsReturn;
- execl("ps ax > temp.out" ); // a modifier, syntaxe approximative
- ifsPsReturn.open("temp.out" );
- while (!ifsPsReturn.eof()) {
- ifsPsReturn >> buffer;
- vsTableProcess.push(buffer); // accumule les process dans le vecteur, ligne par ligne
- }
- ifsPsReturn.close();
- } else {
- usleep(500000); // attendre 500ms ( tres sale, a éviter )
- // Maintenant tu fais ce que tu as a faire, ton vector vsTableProcess contient des Strings
- // qui décrivent tous les processus qui tournent sur le systeme, t'as plus qu'a analyser
- // ton vecteur avec l'itérateur qui va bien, pour la signification de chaque ligne, "man ps" est ton ami
- }
|
Je suis bien conscient que ce pseudo-code est juste bon a être imprimé sur du PQ pour rire un peu pendant la pause pipi.
Mais si ça peut débloquer la situation...