IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Lister les processus


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Par défaut Lister les processus
    Bonjour,

    J'aimerai savoir si quelqu'un connait une solution déjà existante en Java (sous forme d'API ou autres) permettant de lister tous les processus lancés sur une machine Windows ou Linux (mais pas lancés par la JVM), de récupérer leur PID, de les killer, etc. ? J'ai entendu parlé de JNI ? Quelle est son utilité et pourrait-elle servir dans le cadre de mon problème ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par dessda
    Bonjour,

    J'aimerai savoir si quelqu'un connait une solution déjà existante en Java (sous forme d'API ou autres) permettant de lister tous les processus lancés sur une machine Windows ou Linux (mais pas lancés par la JVM), de récupérer leur PID, de les killer, etc. ? J'ai entendu parlé de JNI ? Quelle est son utilité et pourrait-elle servir dans le cadre de mon problème ?

    Merci.
    Je connais pas de telles Api, mais JNI est une api permettant de faire le lien entre programme natif (C++ par exemple) et un programme java. Tu peut donc appeler des méthodes en C++ qui te permettraient de lister des process par exemple.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    salut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("monappli");
     
    // Consommation de la sortie standard de l'application externe dans un Thread separe
    new Thread() {
    	public void run() {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    			String line = "";
    			try {
    				while((line = reader.readLine()) != null) {
    					// Traitement du flux de sortie de l'application si besoin est
    				}
    			} finally {
    				reader.close();
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }.start();
     
    // Consommation de la sortie d'erreur de l'application externe dans un Thread separe
    new Thread() {
    	public void run() {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    			String line = "";
    			try {
    				while((line = reader.readLine()) != null) {
    					// Traitement du flux d'erreur de l'application si besoin est
    				}
    			} finally {
    				reader.close();
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }.start();
    source : http://ydisanto.developpez.com/tutoriels/j2se/runtime/

    tu mets ps pour monappli en ""
    dans le traitement tu peux spliter line pour avoir un tableau ou autre pour faire les traitements qui suivent

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par dessda
    Bonjour,
    J'aimerai savoir si quelqu'un connait une solution déjà existante en Java (sous forme d'API ou autres) permettant de lister tous les processus lancés sur une machine Windows ou Linux (mais pas lancés par la JVM), de récupérer leur PID, de les killer, etc. ?
    Non je ne pense pas que ca existe en "standard" dans JSE. La plateforme JVM+JSE est sensée etre portable et ces fonctions sont trop spécifique a l'OS.

    J'ai entendu parlé de JNI ? Quelle est son utilité et pourrait-elle servir dans le cadre de mon problème ?
    Merci.
    Pour faire simple, JNI sert a appeler des fonctions contenues dans une librarie (dll/so) depuis un objet Java. Cette librairie doit respecter la convention JNI (signatures, structures, ...), donc on ne peut pas utiliser directement les librairies de l'OS.

    La librairie jnative permet de faire ca pour windows, mais pas pour linux

    Mais tu peux créer 2 librairies avec les memes signatures (une dll et un .so) , comme cela tu n'as pas a modifier ton programme Java. La JVM charge toute seule la bonne librairie (dll pour windows, .so pour linux)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Par défaut
    J'avais pensé à le faire en envoyant des lignes de commandes mais il faudrait que je fasse deux codes différents pour linux et windows...

    Je vais quand même regarder ce que ça donne et me pencher un peu plus sur JNI.

    En tout cas merci pour vos réponses ! Elles m'ont bien éclairées

Discussions similaires

  1. Lister les processus - programme qui se fige
    Par filaos974 dans le forum Allegro
    Réponses: 0
    Dernier message: 25/10/2007, 19h15
  2. Réponses: 9
    Dernier message: 18/06/2007, 10h27
  3. [VB.NET 2.0] Comment lister les processus sur PPC ?
    Par catzguy dans le forum Windows Mobile
    Réponses: 6
    Dernier message: 16/04/2006, 00h38
  4. Lister les processus et les PID dans une listview .
    Par maxoudu328 dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 16/10/2005, 16h03
  5. [reseaux] Lister les processus sur une machine donnée
    Par BEAUJAULT dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 29/07/2004, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo