Raspberry Pi Java关闭钩子
问题描述:
我有一个运行Java 1.8.0的Raspberry Pi和一个名为test.jar的文件。当我运行代码然后用Ctrl + Z停止程序时,Shutdown钩子不会运行,但是当我在Windows上运行代码并停止它时,关闭钩子将工作。Raspberry Pi Java关闭钩子
如何解决此,由于
public class Test
{
public static void main(String[] args)
{
Runtime.getRuntime().addShutdownHook(new Thread() //Add shutdown code
{
public void run()
{
System.out.println("Shutdown");
}
});
while(true) { }
}
}
答
在Linux终端,CTRL-Z发送SIGSTOP
前台进程。这是您的进程中无法处理的两个信号之一(另一个是SIGKILL
)。这意味着java无法运行任何代码来响应信号。
但是,SIGSTOP
无论如何不会结束该过程,它只是暂停它。您可以通过发送一个SIGCONT
信号来继续它,这可以通过使用fg
命令在您的shell中实现。
尝试使用ctrl-c
代替结束您的程序,它应该工作(因为这将发送SIGINT
,而不是处理)。
+0
非常感谢, – oliverjrose99 2014-09-20 17:34:48
在构造函数中使用无限循环很痛苦...尝试在某些方法中排除while循环。 – xio4 2014-09-20 17:21:18
更改了代码 – oliverjrose99 2014-09-20 17:24:44
您是否尝试在Rasberry中按Ctrl + C而不是Ctrl + Z? – xio4 2014-09-20 17:27:46