我有erlang应用程序。我跑了,没关系,一切正常。当我使用Ctrl+C
的应用程序杀死erlang shell时,我的应用程序也停止了,这是正确的行为一切都好,但我怎么能抓住这一刻呢?当我的应用程序停止,正常或错误时,我需要清除一些资源并不重要。我尝试清除gen_server:terminate
中的资源,但是当我杀死erlang shell时它没有执行。我在哪里可以看到我的应用程序停止/杀死的时刻?
谢谢。
答案 0 :(得分:3)
当你执行^C
时,你没有杀死Erlang shell,你正在杀死整个Erlang系统,整个操作系统进程。所以在那之后所有的Erlang都死了。你想做什么?如果您想以受控方式取下整个系统,请使用init:stop/0/1
。它将首先停止所有应用程序及其监督树,以允许行为正确终止。