Theo chủ đề, có cách nào để tắt CTRL-C (và các tín hiệu khác) để chúng không chấm dứt ứng dụng không?Java: Có thể tắt Ctrl-C trong ứng dụng bảng điều khiển Java không?
Trả lời
EDIT2: điều này cũng có thể giúp: Capture SIGINT in Java
This và this dường như những gì bạn muốn.
Ctrl-C và lệnh khác gửi "tín hiệu" cho chương trình của bạn và nếu bạn viết mã để "bắt" nắm bắt những tín hiệu đó, bạn có thể thay đổi cách chương trình phản ứng. Lý tưởng nhất, bạn sẽ muốn ctrl-c chấm dứt chương trình, vì nó là những gì người dùng mong đợi, vì vậy hãy nhớ rằng bạn nên nói cho người dùng biết tại sao nó không kết thúc nếu bạn thay đổi phản hồi của chương trình.
Edit3: Đề nghị của một người chơi chìa khóa cho mèo là lần đặt cược tốt nhất tiếp theo của bạn nếu bạn không thể bắt và loại bỏ sự kiện đó. Halway down the page is an example of how to do it for java in linux/Windows - it's not a portable thing. Về cơ bản, chương trình của bạn sẽ xử lý các sự kiện bàn phím thay vì bàn điều khiển gửi các sự kiện keybaord đến nó. Điều này có nghĩa là dòng lệnh bị bỏ qua và không thể đọc cuộc gọi ctrl-c. Tôi viết mã, nhưng bây giờ tôi đang làm việc; Thứ tư là một ngày dài đối với tôi. Nếu bạn không nhận được nó khi tôi về nhà, tôi sẽ xem xét một số ví dụ.
Cảm ơn sự hỗ trợ của bạn, tuy nhiên các liên kết đó đề cập đến việc thiết lập các móc tắt máy, mà JVM gọi trước khi chấm dứt ứng dụng. Ứng dụng vẫn bị chấm dứt, đó là những gì tôi đang cố gắng ngăn chặn. –
Hãy thử IBM mà tôi vừa thêm vào. Xin lỗi, tôi đang ở trong một lớp học; Tôi sẽ có thể xem xét kỹ hơn sau khi tôi ra ngoài, nhưng đó dường như là bài viết hay nhất. –
Trang bài viết được IBM giới thiệu nói rằng nó không thể được hiển thị - 404: ( – Mike
Bạn cần sử dụng SignalHandler để chặn tín hiệu SIGINT được kích hoạt bởi CTRL-C. CTRL-C sẽ được xử lý ở cấp hệ điều hành giả sử bạn không muốn VM nhận tín hiệu.
IBM developerWorks có một bài viết về làm điều này - http://www.ibm.com/developerworks/ibm/library/i-signalhandling/?open&l=409,t=grj,p=jsh
Oracle liên kết - http://www.oracle.com/technetwork/java/javase/signals-139944.html
Không ai trong số những liên kết đó dường như hoạt động đáng tiếc - chúng thực sự hữu ích. Tôi vừa xem http://ringlord.com/dl/Signals-in-Java.pdf có thể hoặc có thể không phải là những thứ tương tự mà bạn đang đề cập đến. Sử dụng các cuộc gọi API Sun riêng tư –
tôi sẽ giả định nếu bạn bắt đầu một KeyListener để xử lý các trường hợp Ctrl + C được ép nó nên hoặc là phủ nhận ' phản ứng tự nhiên hoặc gọi một chương trình con mà bạn đã thiết kế thay thế.
Các giả định không phải là câu trả lời, đây là một lời nhận xét: –
Giả định cũng sai. –
- 1. Màu sắc trong bảng điều khiển Java
- 2. Tắt in bảng điều khiển trong Log4js
- 3. bảng điều khiển java charset dịch
- 4. Có cách nào để in trên bảng điều khiển trong ứng dụng Android không?
- 5. Java - bảng điều khiển góc tròn với compositing trong paintComponent
- 6. Tại sao tôi không thể khởi chạy Ứng dụng khách SSH Java từ Bảng điều khiển quản lý AWS?
- 7. Tôi có thể thêm thẻ vào ứng dụng trong bảng điều khiển chơi google không?
- 8. Ứng dụng Bảng điều khiển Javascript?
- 9. Chuyển đổi Chương trình Bảng điều khiển Java thành Webapp
- 10. Phím tắt ứng dụng rộng - Java Swing
- 11. Sử dụng WebBrowser trong ứng dụng bảng điều khiển
- 12. Sử dụng Dao cạo trong ứng dụng bảng điều khiển
- 13. Có thể đọc từ bảng điều khiển trong Dart không?
- 14. java Liên kết của bảng điều khiển BoxLayout
- 15. Ứng dụng bảng điều khiển lưu trữ trên Azure hoặc Amazon, có thể không?
- 16. Có thể hiển thị văn bản trong bảng điều khiển có hiệu ứng tấn công không?
- 17. Chuyển đổi ứng dụng bảng điều khiển thành dịch vụ?
- 18. Cách nhúng ứng dụng Bảng điều khiển bên trong ứng dụng Winforms
- 19. Có Bảng điều khiển quản lý ứng dụng cho Jetty không?
- 20. cập nhật cửa sổ bảng điều khiển với java
- 21. Tạo chế độ toàn màn hình bảng điều khiển Java
- 22. Viết bảng điều khiển trong một ứng dụng
- 23. Ứng dụng Giao diện điều khiển .Net không hiển thị Bảng điều khiển
- 24. Cách xử lý^C trong các ứng dụng bảng điều khiển JVM?
- 25. Ứng dụng Bảng điều khiển Unicode trong Delphi 2009
- 26. Phân tích cú pháp đầu vào bàn phím Java trong ứng dụng giao diện điều khiển
- 27. Tắt thanh cuộn ngang trong bảng điều khiển EXTJS
- 28. Chương trình điều khiển Java
- 29. Hỗ trợ cần điều khiển trong Java
- 30. JAVA Swing MVC - Bộ điều khiển chính?
bản sao có thể có của [Tín hiệu xử lý trong Máy ảo Java] (http://stackoverflow.com/questions/40376/handle-signals-in-the-java-virtual-machine) –
Bạn có thể tắt một số tín hiệu nhưng không phải tất cả 'kill -9';) –
@Johan Bài viết đó giải thích một số khó khăn mà tôi đang gặp phải. Cụ thể hơn, có vẻ như JVM chặn các tín hiệu gọi các móc tắt (được đăng ký qua Runtime.addShutdownHook) trước khi kết thúc. Tuy nhiên nó dường như không mô tả làm thế nào/nếu nó có thể * vô hiệu hóa * tín hiệu (hoặc ít nhất là ngăn chặn chúng từ chấm dứt ứng dụng). –