【问题标题】:How to catch a control-c to the Erlang shell?如何将 control-c 捕获到 Erlang shell?
【发布时间】:2016-06-06 15:27:31
【问题描述】:

我正在运行一个 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 来跳出 shell。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    你的意思是你按CTRL-C然后(a)bort? CTRL-C 本身被Shell 截取给你显示菜单。但是,当您按下 abort 时,它会无条件地停止 Erlang VM。您需要优雅地退出 shell,例如q().init:stop()

    【讨论】:

    • 谢谢。 Control-c,然后 control-c 再次爆发
    • 是的,同样的事情。尝试正常关闭 VM,以便它有机会停止运行 gen_server
    • 如果清理始终运行对您的系统很重要,您可能还需要使用 +B 选项来 erl,以防止从 shell 意外硬关机。详情请见erlang.org/doc/man/erl.html
    猜你喜欢
    • 2019-07-17
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多