erlang - 捕获 Erlang 应用程序被杀死的情况

标签 erlang terminate erlang-otp

我有 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/

相关文章:

erlang - 列表中的整数打印为 "\v"?

erlang - 如何根据内存使用情况分析 Erlang 程序?

.net - 线程C#中发生异常时,进程未终止

mysql - 使用 mysql :query 为 erlang 使用 mysql-otp 驱动程序插入多行

erlang - 使用 Erlang 管理程序时,我可以执行代码来响应子进程的退出吗?

linux - `make release_tests` 在全新 Erlang 安装中进行 ./configure 后失败

erlang - 标记引用的字符串

string - 检查 unicode 值是否在 Erlang 二进制字符串中?

c++ - Mac OS X 等效于 TerminateProcess(GetCurrentProcess,0);

objective-c - 终止另一个正在运行的应用程序 - Cocoa