我正在运行一个 gen_server,我想在它退出之前进行一些清理。当我从命令行运行它时,我得到了一个 Erlang shell 提示。我在 gen_server 函数定义中有一个 handle_info({'EXIT'}, From, Reason} 和一个 terminate(Reason, State)。当我在 Erlang shell 中使用 control-c 时,这些似乎都没有被触发。
那么,如何在我的 gen_server 中捕获在 Erlang shell 中输入的 control-c ?
编辑:我一直按 control-c 来获取菜单,然后再次按 control-c 来跳出外壳。
你的意思是先按CTRL-C然后(a)bort?CTRL-C它本身被 Shell 拦截来显示菜单。但是,当您按下 abort 时,它会无条件停止 Erlang VM。您需要优雅地退出 shell,例如使用q().或init:stop()。