Tuer un processus depuis Java
Bonjour,
J'essaye désespérément de trouver comment tuer un proccessus à partir de son PID depuis un autre programme en Java.
J'ai d'abord essayé cette fonction :
Code:
1 2 3 4 5 6 7 8 9
| static void tuerProcessus2(String id)
{
Process p = null;
try {
p = Runtime.getRuntime().exec( "tskill "+id ); //ou taskkill
} catch (IOException e) {
e.printStackTrace();
}
} |
Qui retourne cette erreur et ne tue pas le processus :
Cannot run program "tskill": CreateProcess error=2, Le fichier spécifié est introuvable
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at Main.tuerProcessus2(Main.java:98)
Ensuite j'ai fait une fonction qui écrit un script .bat et l'execute :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| static void tuerProcessus(String id)
{
ecrire("arret importeur.bat", "%systemroot%\\system32\\tskill "+id+"\npause");
if (Desktop.isDesktopSupported()) {
// Si on est ici, c'est que le desktop est supporté.
try {
String nomFichier = ("arret importeur.bat"; // Le nom du fichier
File fichier = new File(nomFichier); // Le fichier
Desktop desk = Desktop.getDesktop(); // Le lanceur
desk.open(fichier); // Lancer le fichier
// Et voilà
} catch (IOException ex) {/*Le fichier n'est pas trouvé */}
}
} |
Résultat : 'tskill' n'est pas reconnu en tant que commande interne
Et le processus n'est pas arrêté. Par contre si je double clique sur le fichier arret importeur.bat là ça arrête bien le processus, j'en déduit donc que c'est une sorte de protection
Avez vous une solution ?