Я создаю TFTP-сервер и поддерживаю его с помощью бесконечного цикла. Когда я пытаюсь отправить сигнал killКрючок выхода для Java-процесса
/bin/kill -s SIGINT <pid>
Я хочу, чтобы процесс Java закрыл TFTP-сервер и вышел.
class TFTP {
public void startTFTP(String str, String str1){
try {
//Start TFTP server
// Both of below are not working.
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run(){
//Shutdown tftp server
System.out.println("Exiting");
System.exit(0);
}
});
SignalHandler handler = new SignalHandler() {
public void handle(Signal signal) {
System.exit(0);
}
};
Signal.handle(new Signal("INT"), handler);
Signal.handle(new Signal("TERM"), handler);
while(true){
// Infinite loop to keep process running.
}
}
} catch (Exception e) {
}
}
public static void main(String args[]){
TFTP tftp = new TFTP();
tftp.startTFTP(args[0],args[1]);
}
}
я убить процесс из сценария и вызова
/bin/kill -s SIGINT <pid>
не убивает процесс Java по некоторым причинам. Я думал, что SIGINT обрабатывается как часть
Signal.handle(new Signal("INT"), handler);
Что мне здесь не хватает?
С уважением
Dheeraj Joshi
Вы видели http://stackoverflow.com/questions/2541475/capture-sigint-in-java? –
Да, я сделал поиск в Google и поискал старые потоки StackOverFlow. Но kill -2 тоже не работает для меня. Так что мне было интересно, я думаю, я сделал некоторые основные ошибки. –