Bonjour,
j'aurai voulu savoir si il était possible d'intercepter le CTRL+C lorsqu'un programme Java est lancé directement en ligne de commande pour éviter l'interruption brutale du processus.
Bonjour,
j'aurai voulu savoir si il était possible d'intercepter le CTRL+C lorsqu'un programme Java est lancé directement en ligne de commande pour éviter l'interruption brutale du processus.
Salut,
Regarde du coté de Runtime.addShutdownHook()...
a++
Merci pour ta reponse express. C'est exactement ce que je cherchais.
Salut j'ai plus ou moins la même requête, et le ShutdownHook n'est pas satisfaisant puisqu'on ne peut pas empêcher la fermeture de la jvm avec le ShutdownHook.
De plus il me semble qu'il n'y a pas moyen de connaitre le signal recu non ?
Finalement j'ai trouvé une solution, je pense qu'elle ne marche pas avec toutes les versions de jvm car j'ai trouvé des solutions différentes qui ne fonctionnaient pas en 1.6, mais celle là est la bonne pour 1.6 :
avec ce code je récupère le SIGINT et je peux empêcher mon programme de s'arrêter lorsqu'on le recoit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 sun.misc.Signal.handle(new sun.misc.Signal("INT"), new sun.misc.SignalHandler() { public void handle(sun.misc.Signal sig) { // faire un truc avec le signal } });
A noter que sun.misc.Signal.handle() renvoit en retour le SignalHandler qui gérait ce signal auparavant que l'on peut récupérer si on veut par exemple chainer les SignalHandler
kpouer >>
Salut,
peux-tu me dire où trouver sun.misc s'il te plait car j'ai beau cherché je ne trouve aucun téléchargement pour utiliser cette API et ce fameux SignalHandler.
J'ai bien un sun.misc (certainement inclus avec la jvm) sur ma bécane mais il n'y a rien dedans apparemment.
Merci
Il s'agit d'un package non documenté qui ne doit normalement pas être utilisé. Il est fait pour être utilisé uniquement par la JVM en interne.
Sa présence et son fonctionnement peut varier suivant la version de la JVM ou de l'OS sur lequel elle tourne. Bref à utiliser a ses risques et périls. Ne t'étonnes pas si ça ne fonctionne pas.
Uther >>
merci, mais cela ne me dit pas où trouver la librairie sun.misc, est-ce qu'il y a un site (disons officiel) où je peux la télécharger ?
et sinon, est-ce qu'il y a un autre moyen ? car j'ai essayé "Runtime.getRuntime().addShutDownHook(...)" et cela ne marche pas si le processus est stoppé avec un brutal ctrl + c.
Merci
Elle fait partie de certaines versions du JDK pour certains OS, visiblement pas pour ta Version/OS. Vu qu'il s'agit de traiter les signaux système ce n'est probablement disponible que sur les OS de type UNIX(Linux, MacOS X, ...).
Quant au shutdownHook, il n'empêche pas l'arrêt mais il devrait tout de même être exécute.
Uther >>
Bonjour,
Actuellement je travaille sous Ubuntu et apparemment la version du JDK installé à partir du gestionnaire de package ne possède plus cette librairie (ou du moins son contenu).
Merci pour ton aide, je vais appronfondir la voie du ShutDownHook.
Tchû
Partager