Comment gérer un SIGTERM
3 réponses
Oui, vous pouvez enregistrer un arrêt crochet avec Runtime.addShutdownHook()
.
48
répondu
Matthew Flaschen
2010-06-04 14:56:16
Vous pouvez ajouter un crochet d'arrêt pour effectuer un nettoyage.
Comme ceci:
public class myjava{
public static void main(String[] args){
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("Inside Add Shutdown Hook");
}
});
System.out.println("Shut Down Hook Attached.");
System.out.println(5/0); //Operating system sends SIGFPE to the JVM
//the JVM catches it and constructs a
//ArithmeticException class, and since you
//don't catch this with a try/catch, dumps
//it to screen and terminates. The shutdown
//hook is triggered, doing final cleanup.
}
}
Puis exécutez-le:
el@apollo:~$ javac myjava.java
el@apollo:~$ java myjava
Shut Down Hook Attached.
Exception in thread "main" java.lang.ArithmeticException: / by zero
at myjava.main(myjava.java:11)
Inside Add Shutdown Hook
27
répondu
scompt.com
2018-07-09 19:38:31
Une autre façon de gérer les signaux en Java est via le soleil.misc.paquet de signal. Reportez-vous à http://www.ibm.com/developerworks/java/library/i-signalhandling/ pour comprendre comment l'utiliser.
Remarque: la fonctionnalité étant dans sun.* package signifierait également qu'il peut ne pas être portable/se comporter de la même manière sur tous les systèmes d'exploitation. Mais vous pouvez l'essayer.
5
répondu
arcamax
2010-06-07 06:16:59