如何在进程退出前运行代码?

问题描述 投票:0回答:1

我想在当前进程正常退出的时候运行代码把数据刷新到磁盘。我不介意当进程异常终止时这段代码是否也运行。

我试过使用 Gc.finalise 但看起来终结器并不总是运行。

OCaml 是否有类似 Python 的atexit 或 Node 的

process.on('exit')
之类的东西?

process ocaml
1个回答
3
投票

OCaml 确实有一个

at_exit
功能。 来自doc

val at_exit : (unit -> unit) -> unit

注册要在程序终止时调用的给定函数。 程序执行时会调用用 at_exit 注册的函数
以下任何一项:

  • 执行退出
  • 正常终止或由于未捕获的异常终止
  • 执行 C 函数 caml_shutdown。这些函数按“后进先出”的顺序调用:最近添加的函数 at_exit 首先被调用。
© www.soinside.com 2019 - 2024. All rights reserved.