IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Intercepter le CTRL+C [FAQ]


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut Intercepter le CTRL+C
    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.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Regarde du coté de Runtime.addShutdownHook()...

    a++

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut
    Merci pour ta reponse express . C'est exactement ce que je cherchais.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Par défaut
    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 ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Par défaut
    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 :

    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
    	}
    });
    avec ce code je récupère le SIGINT et je peux empêcher mon programme de s'arrêter lorsqu'on le recoit.
    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

  6. #6
    Membre confirmé Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Par défaut
    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

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    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.

  8. #8
    Membre confirmé Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Par défaut
    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

  9. #9
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    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.

  10. #10
    Membre confirmé Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Par défaut
    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û

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Intercepter un Ctrl+S
    Par skalimer0 dans le forum wxWidgets
    Réponses: 2
    Dernier message: 15/04/2009, 08h43
  2. Interception signal Ctrl+C ?
    Par aprosper dans le forum Langage
    Réponses: 3
    Dernier message: 03/02/2009, 16h12
  3. Intercepter CTRL+ALT+D dans ma fenêtre
    Par david_chardonnet dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2008, 10h05
  4. [C#2.0]Interception de l'évènement Ctrl + A
    Par fagos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/06/2006, 15h28
  5. Interception de touches "Ctrl-xxx"
    Par bernardmichel dans le forum Access
    Réponses: 4
    Dernier message: 28/03/2006, 06h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo