Lister les processus

cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008 - 29 févr. 2008 à 12:10
cs_samiad Messages postés 20 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 décembre 2009 - 21 avril 2009 à 17:32
Bonjour,

Comment avoir une liste des processus qui tourne sur ma machine ?

et quels sont les APIs qui me permettent de manipuler les processus ?

merci

20 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 févr. 2008 à 15:37
Salut,

nan c'est pas spécialement complex, mais pour unix tu peux aussi le faire en java pure par le biais d'un appel système (je zap toujours cette méthode vu que c'est la porte ouverte aux failles de secu d'une application)

exemple :
import java.io.IOException;
import java.util.Scanner;

public class ProcessPrinter {

    public static void main(String[] args) throws IOException {
        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("/bin/ps -auxf");
        Scanner sc = new Scanner(proc.getInputStream());
        while(sc.hasNextLine())
            System.out.println(sc.nextLine());
        sc.close();
    }
   
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
1
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 févr. 2008 à 12:33
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.3 (Linux)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

la liste des processus
dépends essentiellement du système d'exploitation sur
le quel ton application tourne donc tu devras sûrement (à
90% de chances) passer par du code natif... tu peux soit avoir de la
chance et tomber sur un API déjà écrite (perso
j'en connais pas), soit passer par JNI (il te faudra coder un wrapper
C/C++ vers JAVA) ou encore passer par JNA (ça t'évite
de faire du C/C++)











------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
29 févr. 2008 à 15:04
Salut,

merci Twinuts pour ta réponse, l'eventuelle application doit etre testé
sous l'environnement solaris (si j'arrive à la developper biensure), je
n'imaginais pas que le fait de lister les processus étais si
compliqué  :(
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
29 févr. 2008 à 15:50
salut,

merci Twinuts je vais essayer le code que vous m'avez proposé.

à bientôt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
29 févr. 2008 à 19:22
Salut:

Twinuts >> Merci pour le JNA.

<hr size="2" width="100%" />[Félicité de Lamennais] Le plus puissant de tous les leviers, c'est la volonté.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 févr. 2008 à 21:17
Salut,

[auteur/OMBITIOUSDEVELOPPER/237842.aspx Ombitious_Developper]>regarde cette source ICI ou ICI il utilise JNA

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
1 mars 2008 à 20:13
Salut:

Twinuts >> Pourquoi tu ne fais pas un blog histoire de connaître les nouveautés de Java ?

Que penses tu ?

<hr size="2" width="100%" />[Félicité de Lamennais] Le plus puissant de tous les leviers, c'est la volonté.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 mars 2008 à 00:04
Salut,

j'ai déjà un blog CS mais il est trop fantome...... je n'ai pas vraiment le temps de m'en occuper, de plus je prefere parler d'unix plutot que java....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
2 mars 2008 à 16:28
Bonjour,
merci pour vos commentaires, est ce qu'il ya des logiciels semblables à "ProcessMonitor" ou "ProcessExplorer" qui sont OpenSource parceque je cherche des exemples qui peuvent m'aider dans le developpement d'une petite application de process monitoring.
merci pour votre attitude de partage et d'entreaide
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
3 mars 2008 à 17:39
salut,

pour ton code Twinuts je l'ai essayé sous solaris 8 mais ça ne marche
pas malheureusement, il m'affiche : exception in thread main
......NoClassDefFoundError est ce que vous avez une proposition ?
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 mars 2008 à 18:13
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.3 (Linux)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

donne la trace complète
et également la ligne de commande utilisée.
La comme
ça je pense que l'utilisation de la classe Scanner y est pour
beaucoup (dispo seulement depuis le jdk 1.5)











------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
4 mars 2008 à 10:11
Bonjour,

j'ai essayé l'exemple de code sur une machine solaris 8 qui a le jdk 1.5

pas d'erreurs lors de la compilation mais lors de l'exécusion il m'affiche le suivant :

Exception in thread "main" java.lang.NoClassDefFoundError : ProcessPrinter

s'il vous plait  Twinuts j'ai essayé sous XP l'exemple suivant :

 http://www.javafr.com/infomsg_LISTER-APPLICATION-MON-PC_502624.aspx#2

mais ya un problème aussi il me dit que le fichier.wsh est une apllication win32 non valide!!!

est ce que vous suggérez quelque chose ?

merci
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 mars 2008 à 11:50
Salut,

quelle est la ligne de commande utilisée pour le bout de code que je t'ai donné ?

Je n'ai pas sur les problèmes sous windows  (je n'ai pas de windows sous la main)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
4 mars 2008 à 13:39
salut,
pour le code que vous m'avez donné je l'ai compilé dans une fenetre terminal par la commande:
javac ProcessPrinter.java
puis pour l'exécution j'ai fait:
java ProcessPrinter
et c'est là apres cette dernière commande que l'erreur est affichée
en plus la commade que contient le code à savoir "ps -auf" ne donne pas le résultat souhaité que sous fedora par exemple
merci pour votre aide Twinuts
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 mars 2008 à 14:20
Salut,

adapte la commande suite à un 'man ps'... sinon voici un script bash pour générer le fichier java, le compiler, et l'exécuter.

colle le texte ci-dessous dans un fichier nommé 'process_printer', une fois fait pense à le rendre exécutable (chmod +x process_printer) et exécute le (./process_printer) :

#!/bin/bash

FILE=ProcessPrinter
EXEC_CMD="/bin/ps -auxf"

if [ -f "${FILE}.java" ] || [ -f "${FILE}.class" ]; then
        rm ${FILE}*
fi

echo "import java.io.IOException;" > "${FILE}.java"
echo "import java.util.Scanner;" >> "${FILE}.java"
echo "" >> "${FILE}.java"
echo "" >> "${FILE}.java"
echo "" >> "${FILE}.java"
echo "public class ProcessPrinter {" >> "${FILE}.java"
echo "" >> "${FILE}.java"
echo "    public static void main(String... args) throws IOException {" >> "${FILE}.java"
echo "        Runtime rt = Runtime.getRuntime();" >> "${FILE}.java"
echo "        Process proc = rt.exec("${EXEC_CMD}");" >> "${FILE}.java"
echo "        Scanner sc = new Scanner(proc.getInputStream());" >> "${FILE}.java"
echo "        while(sc.hasNextLine())" >> "${FILE}.java"
echo "            System.out.println(sc.nextLine());" >> "${FILE}.java"
echo "        sc.close();" >> "${FILE}.java"
echo "    }" >> "${FILE}.java"
echo "" >> "${FILE}.java"
echo "}" >> "${FILE}.java"
echo "" >> "${FILE}.java"

javac ${FILE}.java
if [ $? -ne 0 ]; then
        echo "javac error."
        exit 1
fi

java ${FILE}
if [ $? -ne 0 ]; then
        echo "java error."
        exit 1
fi
#fin du script

Note ce script necessite la présence de bash sur ton système (testé sous ubuntu && gentoo)
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
4 mars 2008 à 17:01
salut,

je vais tester cette méthode.

merci Twinuts pour ton aide
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
4 mars 2008 à 18:41
salut

est ce que je dois changer l'extension en .sh ???

et puis comment lancer le bash ??

parceque moi les commandes je les exécute avec le terminal

excusez mon niveau faible parceque tout ça c'est nouveau pour moi

merci pour votre compréhension
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 mars 2008 à 18:55
Salut,

"est ce que je dois changer l'extension en .sh ???"

pas besoin car la premiere ligne du script (le bang) fait appel à bash...
cependant tu as 2 solutions :
1 - dans un term tu fais "./process_printer"
2 - tu appels explicitement bash "/bin/bash process_printer"

"et puis comment lancer le bash ?? parceque moi les commandes je les exécute avec le terminal"
le bash est un shell unix donc tu ne le lance pas vraiment... en gros pour faire simple un shell est un interpreteur de commandes (les commandes que tu tapes dans ton terminal)

"excusez mon niveau faible parceque tout ça c'est nouveau pour moi "
Pas de souci, puis on ne vient pas au monde avec la science infuse ^^

"merci pour votre compréhension"
Nous sommes là pour ça, puis quand le sujet est bien tourné ça donne tout de suite plus envie d'aider...

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_cosworth Messages postés 40 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 16 mai 2008
5 mars 2008 à 14:23
Bonjour,

lors de l'excécution du script, il m'affiche; erreur à la linge 42

j'ai une autre question; je travaille sur un autre bout de code java
sur ma machine XP je le compile avec JCreator sans problème et il
s'exécute aussi sans erreur ou exception mais lorsque j'ai essayé de
compiler le fichier.java sous solaris il m'affiche plus que 50 erreurs
!!! notez que le bout de code n'utilise que java.IO,  java.swing
et java.awt donc ya pas de packetages nouveaux à utiliser et j'ai le
jdk1.5 sous solaris et 1.6 sous xp. je n'ai absolument aucune idée sur
ce problème, est ce que vous suggérez quelques choses ??
0
cs_samiad Messages postés 20 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 16 décembre 2009
21 avril 2009 à 17:32
bonjour,
merci pour votre code j'ai besoin de ça dans mon projet de fin d'étude merci beaucoup mais je veut voir aussi les processus de PCs dans le méme réseau local donc comment faire si vous avez une idée répondez moi s'il vous plait.Merci pour votre attention
0
Rejoignez-nous