【问题标题】:How to tell Java to not exit when interrupt signal (Ctrl+C) is received收到中断信号(Ctrl+C)时如何告诉Java不退出
【发布时间】:2022-11-10 00:57:38
【问题描述】:

在 Java 控制台应用程序中,我想通过打印来处理 Ctrl+C:

您真的要退出 (y,N) 吗?

按下“y”时正常终止,但如果按下其他任何内容,则继续运行。

这在Java中可能吗?

原来的

我知道如何通过添加关闭挂钩来优雅地关闭 Java 应用程序,或者如何处理中断或 TERM 等信号。

这里的问题是,在 C 中,当我处理中断时,我可以强制应用程序退出或仅打印一条消息并继续工作。我想做这样的事情。当你按下 Ctrl+C 时,我问你是否真的要退出 (y,n)。

但是,在 Java 中,我看到我所能做的就是在退出之前写一些东西,所以无论如何我都会退出。这个问题的解决方案是什么?

【问题讨论】:

  • Similarquestion,尽管这些似乎都没有提供有效的解决方案,我也不敢关闭这个作为一个副本。
  • 与运行它/控制台的方式相比,这对于 java 来说并不是一个真正的问题。例如,作为后台服务运行的 Java 没有这个问题。您只需要更好地更换控制台
  • 我想知道是否有办法将其作为 java 控制台程序来实现,或者这是不可能的......

标签: java


【解决方案1】:

您可以使用命令末尾的& 将Java 应用程序作为后台进程运行。

这样,命令行中的 CTRL + C 不会强制应用程序退出,您仍然可以在命令行工具中执行其他命令。

#!/bin/sh
java -jar myApp.jar & 

【讨论】:

  • 很抱歉,但这与我的问题无关...我不是在问如何在后台运行应用程序...我在问有没有办法(在 java 中)忽略中断信号在与程序交互时...当您将其发送到后台时,您将不会与它进行交互(例如询问您的姓名,您的年龄...在执行一些操作后 [<-example])我可以做到使用 C 语言或 c++ ...但我需要知道在 java 中是否可行,而不是如何解决它...
猜你喜欢
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多