Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1047 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Interrompre un process lancé par un thread

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interrompre un process lancé par un thread

n°1806885
ib@w
Posté le 31-10-2008 à 12:49:18  profilanswer
 

Bonjour,
 
En java, à partir de mon appli, je lance un traitement via un thread qui lui-même appelle un script shell. Au bout d'un certain temps, je voudrais que l'utilisateur puisse interrompre le traitement s'il dure trop longtemps.  
 
Sur demande de l'utilisateur, je fais donc un Thread.interrupt(); - l'interruption est catchée au niveau du thread qui lance le process (myRuntime.exec( myCommande )).  
Dans le catch je fais un process.destroy(); Le problème c'est que toute l'appli se ferme alors que c'est le bon process que je détruis (et juste ce process que je voudrais tuer).
 
Je ne suis pas sûr d'utiliser la bonne méthode... quelqu'un aurait-il une piste ??
 
Merci,

mood
Publicité
Posté le 31-10-2008 à 12:49:18  profilanswer
 

n°1806916
sircam
I Like Trains
Posté le 31-10-2008 à 13:31:09  profilanswer
 

Et si tu essayes sans process, en remplaçant la création du process par l'affichage d'un message; idem pour le destroy?
 
Histoire de valider l'utilisation que tu fais des threads et de Thread#interrupt()...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1806952
ib@w
Posté le 31-10-2008 à 14:22:31  profilanswer
 

Le fonctionnement du thread est OK. Quand je retire le process.destroy, l'interruption fonctionne correctement. Le problème se situe précisément au niveau du destroy(). Peut-être faut-il appelée une méthode particuluère avant de faire un destroy ??

n°1806954
brisssou
8-/
Posté le 31-10-2008 à 14:37:53  profilanswer
 

mais euh... je vais peut-être dire une connerie, mais une fois que ton thread est arrété, pourquoi tu le laisses pas là où il est ?
 
une fois qu'il ne sera plus référencé par personne, il partira dans le GC est pis c'est tout. Non ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1806956
ib@w
Posté le 31-10-2008 à 14:56:25  profilanswer
 

le process (script sh) continue à tourner en arrière plan même si la main est revenu à l'utilisateur... le but c'est d'arrêter tout traitement lancé par le thread (en l'occurence le script sh).

n°1806958
brisssou
8-/
Posté le 31-10-2008 à 15:02:15  profilanswer
 

ha pardon, j'avais pas saisi le fait que tu lançais vraiment un processus derrière tout ça.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1807346
sircam
I Like Trains
Posté le 01-11-2008 à 22:24:31  profilanswer
 

Un bout de code pour reproduire ça (en réduisant le code au strict minimum, please)?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1807816
ib@w
Posté le 03-11-2008 à 18:06:06  profilanswer
 

bonne idée que celle de réduire le code au strict minimum... ça m'a permis de voir que le problème venait du shebang dans le script shell -> j'ai remplacé #!/bin/ksh par #!/bin/sh et l'interruption fonctionne correctement maintenant... :-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Interrompre un process lancé par un thread

 

Sujets relatifs
SITE WEB : Bouton lance musique sur une meme pageaffecter un thread graphique à une sortie graphique
2 boites de dialogues dans un thread secondairelancer une IHM depuis un worker thread
Affichage dialog dans un threadProblème avec les pointeurs (thread)
garder la main sur un process lanceperte d'evenements inter thread C++
Plus de sujets relatifs à : Interrompre un process lancé par un thread


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR