1

因此,我正在开发一个必须处理用户统计信息和其他数据的命令行服务器程序,并且我有一个命令来停止服务器并将用户统计信息和数据保存到文件中。我想知道的是,是否有一种方法可以在不使用 stop 命令的情况下终止服务器时也保存用户统计信息和数据。我尝试创建一个新进程并查找该进程何时终止,但它没有告诉我服务器何时终止。有什么解决办法吗?

4

1 回答 1

1

我假设您正在谈论某人Ctrl+C的程序或以意外方式终止程序的情况。我知道处理这种情况的最好方法是使用Shutdown Hook

从文档中:

当虚拟机开始其关闭序列时,它将以某种未指定的顺序启动所有已注册的关闭挂钩并让它们同时运行

但这有可能对您不起作用,因为文档还说:

在极少数情况下,虚拟机可能会中止,即在没有完全关闭的情况下停止运行。当虚拟机在外部终止时会发生这种情况,例如在 Unix 上使用 SIGKILL 信号或在 Microsoft Windows 上使用 TerminateProcess 调用。如果本地方法出错,例如破坏内部数据结构或尝试访问不存在的内存,虚拟机也可能中止。如果虚拟机中止,则无法保证是否会运行任何关闭挂钩。

于 2013-04-17T06:42:10.867 回答