[C++] application lancée ?

Résolu
Cedric -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à toutes et a tous,
Je me permet de vous solliciter suite à un petit probleme. J'aimerais creer un petit programme en C++ me permettant de verifier si une application X est lancée. Le probleme est que je n'ai trouvé aucune commande en C++ pour le faire ! (je précise que je suis sous linux)
N'ayant trouvé aucune réponse répondant à mon probleme, je me permet de faire appel à votre génie :) !

exemple pour illustrer mes propos :

Si (application X lancée)
{
//instructions
}
Sinon
{
//Instructions
}


Merci d'avance pour vos réponses !

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
il me semble qu'il n'y a aucune fonction C standard à ce sujet, car très peu portable (la manière de faire dépend fortement de l'OS). En revanche, tu as de la chance de faire ça sous Linux. Dans le répertoire /proc, il y a plein de fichiers qui donnent des informations diverses et varier sur le les processus en cour, l'utilisation de la RAM du CPU etc.
Donc, tu ouvre le bon fichier et tu cherche ton application X.
0
Cedric
 
D'accord, je vais fuiner un peu la dedans alors .
Sinon je pense passer par un script shell....

Merci de m'avoir répondu :)
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
une piste de recherche, le man de ps
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/ps.1.html
si je comprends bien, chaque dossier de /proc ayant pour nom un numéro correspond à un PID. dans chaque dossier il y a plusieurs fichiers dont un qui contient le ligne de commande et donc l'application.
ceci est au final assez complexe à faire.
Tu peux aussi faire un mixe entre shell et C++ grace à la commande system().
exmple qui ne fonctionne pas :
if( system("") ) ...
ne fonctionne pas car APPLIX aparai dans ps du fait du grep, mais il y a une réponse à ce problème sur ce forum (que j'ai oublié)
0