Szy*_*Jeż 30
我可以想到三种退出IEx shell的方法:
<ctrl-c>两次或一次q然后<enter>,<ctrl-g>然后q+ <enter>,System.halt,但是System.halt和其他人之间存在差异.
即System.halt" 暂停Erlang运行时 ",其他只是" 退出shell ".
如果只有一个shell会话在运行,或者会话未连接到单独的运行时,则两种方式都会产生相同的结果.但是如果你有一个会话连接到一个单独的运行时,例如通过iex --remsh(远程shell),那么System.halt在其中运行将停止运行时,因此使两个shell进程/运行时终止.只是退出shell(通过方法1.或2.)将不会停止它连接到的运行时.
结论:如果您将shell连接到其他运行时,那么就知道System.halt将暂停已连接的运行时.如果你不想这样做<ctrl-c>.
更新:最近我也发现了<ctrl-\>.您可以在本文中阅读更多相关信息:
我不知道的是你可以通过发送Ctrl-来退出shell.shell将立即退出.据我所知,它与在Break命令中中止shell具有相同的效果,它不会影响远程节点,它也可以在iex之外工作(例如,您可以用来终止测试).
raa*_*cer 14
断开 shell并停止当前节点.这是大多数情况下您需要的.
1.1.Ctrl+\ - 退出Erlang shell的标准方法.请参阅"4.4如何退出Erlang shell?" 在Erlang - 入门.
1.2.Ctrl+C, a, Enter- 通过Break菜单的(a)bort命令.
1.3.Ctrl+C, Ctrl+C - 看起来像Break菜单的未记录的功能.
1.4.Ctrl+G, q, Enter- 通过User Switch菜单的q(quit erlang)命令(参见Erlang - shell - JCL模式).
注:此留下远程节点还活着,如果您已连接到它iex --remsh(见iex --help和IEx标志-远程shell).
关闭所连接的节点.
2.1.System.halt - 快速而肮脏的关闭.运行时系统以状态代码0退出(干净退出而没有错误).您也可以System.halt(:abort)使用核心转储调用中止.与...相同:erlang.halt.
2.2.:init.stop(System.stop在将来的版本中) - 干净关闭.所有应用程序都可以顺利关闭,所有代码都被卸载,所有端口在系统通过调用终止之前关闭halt(Status).
注意:如果已连接到远程shell,则会使shell保持活动状态iex --remsh.
请注意,如果使用ignore break,+ Bi,system flag启动Erlang,则禁用所有这些选项:( iex --erl +Bi这可能很有用,例如在运行受限shell时).有关详细信息,请参阅Erlang - erl.