gpt4 book ai didi

java - java命令行程序中无法捕获中断

转载 作者:行者123 更新时间:2023-12-02 07:36:58 24 4
gpt4 key购买 nike

Possible Duplicate:
Java: How could I “intercept” Ctrl+C in a CLI application?

在 Windows 上,我启动一个 java 非 gui 应用程序来执行任务然后按 CNTL-C,程序就退出,我的中断处理代码似乎都没有触发,即使在主方法中放置 try/catch 也不会显示堆栈跟踪来表明它已被中断。

public static void main(final String[] args) throws Exception
{
try
{
CmdLineDecoder cld = new CmdLineDecoder();
cld.start(args);
System.exit(0);
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
}

我显然误解了 Cntl-C 的效果,但是什么?

最佳答案

你不能在java中进行一般的信号处理,但你可以处理Ctrl-c

如果您需要在虚拟机关闭时执行某些操作,请使用关闭 Hook :Runtime.addShutdownHook .

来自文档:

The Java virtual machine shuts down in response to two kinds of events:

The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or

The virtual machine is terminated in response to a user interrupt, such as typing ^C, or a system-wide event, such as user logoff or system shutdown.

我过去在 Windows/OSX 上使用过这个。

关于java - java命令行程序中无法捕获中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com