[LINUX] Détectez et traitez les signaux en Java.

Conclusion

Il vaut mieux ne pas le faire.

Qu'est-ce qu'un «signal» en premier lieu?

Signal (anglais: signal) est une forme de communication inter-processus limitée dans les systèmes d'exploitation compatibles POSIX tels que UNIX et Unix. Un mécanisme de transmission de l'occurrence d'événements asynchrones entre processus ou threads.

Par exemple, vous pouvez l'arrêter avec Ctrl + C pendant que le programme est en cours d'exécution, A ce moment, SIGINT est envoyé au système d'exploitation, une commande kill est émise et il est arrêté.

Pour détecter des signaux en Java

Il existe une API appelée sun.misc. {Signal, SignalHandler}. Cependant, cette API n'est pas prise en charge et il n'est pas certain qu'elle restera ou disparaîtra dans Java 9. https://blogs.oracle.com/java/get-ready-jdk9 effrayé. très effrayant.

Pour le moment, je vais l'utiliser dans ce résumé.

Tout d'abord, découvrons quels signaux ne doivent pas être utilisés.

Il y a un signal que la VM saisit, je voudrais donc éviter cela. Voilà pourquoi.

Signaux utilisés par la JVM

http://www.ibm.com/support/knowledgecenter/ja/SSYKE2_7.0.0/com.ibm.java.zos.71.doc/user/sighand.html Comme écrit ici, les principaux signaux sont assez utilisés.

Signaux utilisés par HotSpot VM

http://www.oracle.com/technetwork/java/javase/signals-139944.html Encore une fois, le signal principal est assez utilisé. (Cela ressemble à une JVM)

Ce que vous pouvez voir jusqu'à présent

--Il est plus sûr de ne pas détecter le signal principal (SIGINT ou SIGTERM) --Défini par l'utilisateur (SIGUSR1 / SIGUSR2) est également utilisé

Ensuite, utilisez SIGRTMIN ou une version ultérieure! !! !!

Je ne peux pas dire ça. (Mais)

http://d.hatena.ne.jp/Kazuhira/20150422/1429713440 Comme écrit ici, il ne peut pas être utilisé après RTMIN. triste. Très triste.

Voilà pourquoi

Après avoir passé une journée entière jusqu'à présent, j'ai décidé de prendre une autre méthode. Heureusement, ce n'était pas une exigence pour "détecter le signal", donc c'est probablement une autre façon. Veuillez faire attention s'il y a une ** exigence de "détecter un signal" **.


** Mais c'est bien parce que j'ai appris !!! **
c'est tout.

Recommended Posts

Détectez et traitez les signaux en Java.
Chevauchement d'expressions régulières en Python et Java
Différences entre la syntaxe Python et Java
J'ai écrit une classe en Python3 et Java
Modèle de façade en Java
Motif singleton en Java
Modèle de poids mouche en Java
Gérer les signaux en langage C
Modèle d'observateur en Java
Autorisations Linux sur Java
Utiliser DataFrame en Java
Modèle d'itérateur en Java
Modèle de décorateur en Java
Modèle de prototype en Java
Modèle de proxy en Java
Distribution de Poisson et tracé de distribution cumulative de Poisson via sqlite en Python et Java
J'ai essayé de programmer le test du chi carré en Python et Java.
Supprimez les espaces de début et de fin en Python, JavaScript ou Java
Coordination de chaque processus dans MPI et mise en mémoire tampon de la sortie standard
Trouvons un graphique de la distribution de Poisson et de la distribution cumulative de Poisson en Python et Java, respectivement.
Différence entre processus et travail
Clipping et normalisation dans TensorFlow
J'ai comparé Java et Python!
Pile et file d'attente en Python
Modèle de méthode de modèle en Java
Unittest et CI en Python
Détecter les frappes en python (tty)
Implémenter le processus gaussien dans Pyro
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
J'ai essayé d'utiliser l'API de reconnaissance vocale docomo et l'API Google Speech en Java
Comment afficher les octets de la même manière en Java et Python