我想在当前进程正常退出的时候运行代码把数据刷新到磁盘。我不介意当进程异常终止时这段代码是否也运行。
我试过使用 Gc.finalise 但看起来终结器并不总是运行。
OCaml 是否有类似 Python 的atexit 或 Node 的
process.on('exit')
之类的东西?
OCaml 确实有一个
at_exit
功能。
来自doc:
val at_exit : (unit -> unit) -> unit
注册要在程序终止时调用的给定函数。 程序执行时会调用用 at_exit 注册的函数
以下任何一项:
- 执行退出
- 正常终止或由于未捕获的异常终止
- 执行 C 函数 caml_shutdown。这些函数按“后进先出”的顺序调用:最近添加的函数 at_exit 首先被调用。