我有 erlang 应用程序。我运行了一下,没问题,一切正常。当我使用 Ctrl+C
用我的应用程序杀死 erlang shell 时,我的应用程序也停止了,这是正确的行为,一切正常,但我怎样才能捕获这一刻呢?当我的应用程序停止时,我需要清除一些资源,正常或错误都没关系。我尝试清理 gen_server:terminate 中的资源,但是当我杀死 erlang shell 时它没有执行。我在哪里可以捕捉到我的应用程序停止/终止的时刻?
谢谢。
最佳答案
当你执行^C
时,你并没有杀死Erlang shell,而是杀死了整个Erlang系统,整个操作系统进程。所以在那之后所有的 Erlang 都死了。你想做什么?如果您想以受控方式关闭整个系统,请使用init:stop/0/1
。它将首先停止所有应用程序及其监督树,从而允许行为正确终止。
关于erlang - 捕获 Erlang 应用程序被杀死的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836700/