Il y a quelques temps, j’avais un problème pour lancer un programme en Java avec Runtime.exec(String), mais maintenant, c’est resolu (toujours vider le buffer de sortie du programme ainsi lancé).
Je me suis donc dit que la solution était de fermer “proprement” le tout, et pour cela, je pense qu’il faut demander (via l’entrée standard, qu’on obtient via Process.getOutputStream()) au processus père (celui que j’ai lancé) de se fermer, partant du principe qu’il fermera bien le ou les processus qu’il a lui même lancé.
Mon problème est que je n’arrive pas à demander a mon programme de se fermer, je connais le [Control] + [C] en ligne de commande, mais :
je ne suis pas sûr que ca fonctionne avec tous les programmes (console ET graphique)
je ne sais pas comment “l’émuler” pour le mettre dans le OutputStreamMerci de votre aide.
EDIT: Corrections de fautes d’orthographe/grammaire/…
Edité le 31/05/2007 à 00:41
Le seul handle que j’ai c’est sur le processus père.
Je recherche un “signal” “universel” pour fermer une application.
Sur la page suivante : ASCII Character Code Reference, j’ai lu que “0x03” (End Of Text, ETX) correspondait au [Ctrl]+[C], j’ai donc essayé ce qui suit :
OutputStream pOut = process.getOutputStream();
byte[] data = {(byte)0x03};
pOut.write(data);
pOut.flush();
Lorsque je veux fermer le processus lancé, mais ca ne le ferme pas
popolof > J’ai a peu près tout lu et apparement, y pas mal de methodes/fonctionnalités que beaucoup de developpeurs voudraient, mais qui n’existent toujours pas : destroyWithChildren(), termination handler, getPid(), …
Il va donc peut-etre falloir que je me tourne vers une solution faisant appel a du C++ et des appels du genre "kill …" après avoir recupéré le PID du processus père.
nan JPS c’est pour java process RUn time system je crois, en général c’est API te permet de gérer tous les thread lancer sur la JVM. Je sais bien que dans ton thread n’appartient pas à la JVM mais il y a peu etre des methodes qui te permetterons d’y avoir acces.
A voir …