Diary/2004-12-8
Javaで\C-c
Javaで書いたプログラムはJavVMがC-cで終了してしまう.なので,トランザクション処理のようなプログラムを書いている場合など,
C-cを押されたタイミングで勝手に落ちてしまわれると困る場合には,
java.lang.Runtime.addShutdownHook(Thread)を使う.
HookTestがThreadを継承したクラスだとすると,
Runtime.getRuntime().addShutdownHook(new HookTest());こんな感じでaddしていけばいいのだが,このShutdownHookちょっと使いづらい.
デッドロックを防ぐためなのか,
Shutdown進行中には,次のフックをaddSHutdownHookで登録することができない.
また,このHook状態を破棄することができないので,
JavaVMは終了状態に移行すると,元の状態に戻れないということになる.
従って,例えば,C-cが入力されたときに
「終了します(Y/N)」みたいな対話式のプログラムは作れない...
... ...
...と思う.もしできる方法があるなら教えて欲し〜です♪
でも自由にシグナル扱おうと思ったら,やっぱりJNIでsingal関数かな〜
ただ,ちょっとやってみたらJVMのスレッドの関係でちょっと面倒な感じでした.
Copyright (c) 2001-2008 Takefumi MIYOSHI, All rights reserved