Come afferma il soggetto, c'è un modo per disabilitare CTRL-C (e altri segnali) in modo che non possano terminare l'applicazione?Java: è possibile disabilitare Ctrl-C nell'applicazione console Java?
risposta
EDIT2: questo può anche aiutare: Capture SIGINT in Java
This e this sembrano essere ciò che si desidera.
Ctrl-C e altri comandi inviano "segnali" al programma, e se si scrive codice per "catturare" catturare quei segnali, è possibile modificare il modo in cui il programma reagisce. Idealmente, vorrai ctrl-c per terminare il programma, in quanto è ciò che l'utente si aspetta, quindi tieni presente che dovresti dire all'utente perché non si interrompe se cambi la risposta del programma.
Edit3: Il suggerimento di un keylist per i gatti è la tua prossima migliore scommessa se non puoi prendere e chiudere l'evento tu stesso. Halway down the page is an example of how to do it for java in linux/Windows - it's not a portable thing. In sostanza, il tuo programma gestirà gli eventi della tastiera invece della console inviando gli eventi keybaord ad esso. Ciò significa che la riga di comando viene ignorata e non può leggere la chiamata ctrl-c. Scriverei codice, ma ora sono al lavoro; I mercoledì sono una lunga giornata per me. Se non l'hai ottenuto prima che torni a casa, darò un'occhiata a scrivere alcuni esempi.
Grazie per l'assistenza, tuttavia questi collegamenti si riferiscono alla configurazione dei ganci di arresto, che la JVM chiama prima di chiudere l'applicazione. L'applicazione è ancora terminata, che è quello che sto cercando di prevenire. –
Prova quello IBM che ho appena aggiunto. Scusa, sono in una classe; Sarò in grado di dare un'occhiata più da vicino dopo che sono fuori, ma quello è sembrato il miglior articolo. –
La pagina di articolo di riferimento di IBM dice che non può essere visualizzata - 404 :( – Mike
È necessario utilizzare un SignalHandler per intercettare il segnale SIGINT attivato da un CTRL-C. Il CTRL-C verrà gestito a livello di sistema operativo presumendo che non si desideri che la VM riceva il segnale.
IBM developerWorks ha un articolo a fare questo - http://www.ibm.com/developerworks/ibm/library/i-signalhandling/?open&l=409,t=grj,p=jsh
Oracle collegamento - http://www.oracle.com/technetwork/java/javase/signals-139944.html
Sembra che nessuno di questi collegamenti funzioni, peccato che siano davvero utili. Ho appena visto http://ringlord.com/dl/Signals-in-Java.pdf che potrebbe Non si tratta delle stesse cose a cui ti riferivi. Utilizza le chiamate API Sun private: –
vorrei assumere se hai iniziato un KeyListener per gestire l'evento di Ctrl + C viene premuto o esso deve negare l' ' risposta naturale o chiama una subroutine che hai progettato invece.
Ipotesi non sono risposte Questo dovrebbe essere un commento –
Anche l'ipotesi è errata. –
- 1. Java out.println() come è possibile?
- 2. Programma console Java
- 3. Non è possibile disabilitare android.widget.Button
- 4. Java Swing - Come disabilitare un JPanel?
- 5. È possibile l'iniezione di codice in Java?
- 6. È possibile utilizzare Java per creare dll?
- 7. È possibile chiamare il codice Java C++?
- 8. È possibile richiamare un println in Java?
- 9. In Java, è possibile cancellare un po '?
- 10. È possibile firmare un'applet java gratuitamente?
- 11. È possibile eseguire file binari in java?
- 12. Parametro enum generico in java. È possibile?
- 13. È possibile eseguire il wrap della parola nella console di traccia stack Java in Eclipse?
- 14. Come disabilitare il garbage collector Java?
- 15. System.Windows.Forms.WebBrowser sembra disabilitare lo script java?
- 16. Come disabilitare il gestore della sicurezza Java?
- 17. Non è possibile impostare LD_LIBRARY_PATH per il processo Java
- 18. Come disabilitare le importazioni statiche Java automatiche?
- 19. Come disabilitare il gestore di console predefinito, mentre si utilizza l'API di registrazione java?
- 20. Compilazione di più classi (console) in Java
- 21. Come disabilitare la registrazione log4j dal codice Java
- 22. Applicazione console con Java e gradle
- 23. Convertire un programma Java Console in Webapp
- 24. aggiorna la finestra della console con java
- 25. Ingresso console Java in Sublime Text 2?
- 26. Java PhantomJSDriver disabilita tutti i registri nella console
- 27. È possibile disabilitare il completamento automatico?
- 28. È possibile disabilitare jsessionid nel servlet tomcat?
- 29. Quando è possibile disabilitare safe viewstate?
- 30. Non è possibile disabilitare la scrittura facilitata
possibile duplicato di [Gestire i segnali nella Java Virtual Machine] (http://stackoverflow.com/questions/40376/handle-signals-in-the-java-virtual-machine) –
È possibile disabilitare alcuni segnali, ma non tutti eg 'kill -9';) –
@Johan Questo articolo spiega alcune delle difficoltà che sto avendo. Più in particolare, sembra che la JVM intercetti segnali di hook hook di chiusura (registrati tramite Runtime.addShutdownHook) prima di terminare. Tuttavia non sembra descrivere come/se sia possibile * disabilitare * i segnali (o almeno impedirgli di chiudere l'applicazione). –