Java - Process
Résolu/Fermé
lil_neo
Messages postés
367
Date d'inscription
vendredi 31 août 2007
Statut
Membre
Dernière intervention
30 mai 2010
-
16 déc. 2008 à 16:45
lil_neo Messages postés 367 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 30 mai 2010 - 17 déc. 2008 à 12:27
lil_neo Messages postés 367 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 30 mai 2010 - 17 déc. 2008 à 12:27
Bonjour,
je suis parvenu à lancer un processus de la manière suivante : Process pr = Runtime.getRuntime().exec(commande);
maintenant j'aimerais bien pouvoir killer ce processus au bout d'un certain temps.
Comment dois-je m'y prendre ? Une idée ? Merci d'avance.
je suis parvenu à lancer un processus de la manière suivante : Process pr = Runtime.getRuntime().exec(commande);
maintenant j'aimerais bien pouvoir killer ce processus au bout d'un certain temps.
Comment dois-je m'y prendre ? Une idée ? Merci d'avance.
A voir également:
- Java - Process
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
3 réponses
lil_neo
Messages postés
367
Date d'inscription
vendredi 31 août 2007
Statut
Membre
Dernière intervention
30 mai 2010
126
17 déc. 2008 à 10:59
17 déc. 2008 à 10:59
Merci, c'était une piste intéressante mais malheureusement pas tout à fait adaptée à mon problème.
En fait je me trouve dans la même situation que dans ce post : http://java.ittoolbox.com/groups/technical-functional/java-l/processdestroy-not-running-for-a-certain-case-556705
("réponse" apportée : http://java.ittoolbox.com/groups/technical-functional/java-l/processdestroy-not-running-for-a-certain-case-558391 )
Donc si j'ai bien compris, avec le destroy() je kill cmd mais pas le process que je lance avec...
En fait je me trouve dans la même situation que dans ce post : http://java.ittoolbox.com/groups/technical-functional/java-l/processdestroy-not-running-for-a-certain-case-556705
("réponse" apportée : http://java.ittoolbox.com/groups/technical-functional/java-l/processdestroy-not-running-for-a-certain-case-558391 )
Donc si j'ai bien compris, avec le destroy() je kill cmd mais pas le process que je lance avec...
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
16 déc. 2008 à 16:51
16 déc. 2008 à 16:51
Bonsoir,
Il faut créer un timer. Une fois exécuté, tu appelles pr.destroy().
Cordialement,
Il faut créer un timer. Une fois exécuté, tu appelles pr.destroy().
Cordialement,
lil_neo
Messages postés
367
Date d'inscription
vendredi 31 août 2007
Statut
Membre
Dernière intervention
30 mai 2010
126
17 déc. 2008 à 12:27
17 déc. 2008 à 12:27
Si je suis passé par cmd, c'était à l'origine pour avoir le choix de l'OS. Mais réflexion faite je n'ai besoin que de windows, donc effectivement je n'ai qu'a lancer directement mon programme !
Next step : utiliser tout ça avec Oracle !
Merci de ton aide !
Next step : utiliser tout ça avec Oracle !
Merci de ton aide !
17 déc. 2008 à 12:04
Effectivement, l'instance de Process que tu manipules est le process qui a été créé par Java.
Dans ton exemple, tu crées un process fils (cmd), qui a donc ton programme pour parent. Ensuite, c'est cmd qui exécute la commande, ce qui a pour effet de créer un autre processus dont cmd est parent.
Quand tu détruis ton process, c'est donc cmd qui est détruit (je n'ai pas trouvé de moyen de récupérer le process créé par cmd en java, mais je trouve assez ridicule de vouloir lancer la commande via cmd plutôt que via java, ça n'apporte rien).
Selon moi, la seule manière, c'est de faire appel (toujours dans ton cmd) aux commandes système permettant de récupérer le pid du process à tuer (tasklist/taskkill sous windows, ps/kill sous linux...). L'inconvénient (qui n'existe pas si tu crées tes process directement en Java), c'est que c'est un code qui n'est pas portable du tout (il faut donc créer une interface et implémenter les classes pour chaque architecture d'OS).
Cordialement,