Как обнаружить и запретить SIGINT при весенней загрузке? - PullRequest
0 голосов
/ 06 января 2020

У меня есть приложение, которое загружается весной и работает в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...