У меня есть приложение, которое загружается весной и работает в Linux env. когда приложение работает, если кто-то отправляет SIGINT, то приложение останавливается. Я хочу отрицать SIGINT всякий раз, когда кто-то посылает этот сигнал.
Я пытался использовать обработчик сигнала, как показано ниже, но не могу понять это.
Кто-нибудь знает, как это сделать при весенней загрузке?
public class AggregatieApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(AggregatieApplication.class, args);
}
public void run(String... args) {
attachSignalHandler();
/** Initialisation */
initialiseArgs(args);
}
private void attachSignalHandler() {
SignalUtils.attachSignalHandler(this::handleSigInt);
}
private void handleSigInt() {
// here i don't know how to catch and detect ctrl+c command
System.out.println("\nThanks for using attachSignalHandler");
}
}
public final class SignalUtils {
private static final Signal SIG_INT = new Signal("INT");
public static void attachSignalHandler(Runnable runnable) {
Signal.handle(SIG_INT, (signal) -> runnable.run());
}
}
Это то, что я могу сделать в сценарии оболочки перед выполнением myapp.jar и работает нормально, но я хочу кое-что в весенней загрузке приложения.
#!/bin/bash
trap '' 2
echo "This is a test. Hit [Ctrl+C] to test it..."
java -jar egatie-0.0.1-SNAPSHOT.jar
trap 2