另一种退出IEX而不是ctrl-C的方法

Use*_*159 30 elixir iex

我知道我们可以使用control-C退出IEX控制台.我很好奇是否有一个命令输入控制台也会做同样的事情.

Szy*_*Jeż 30

我可以想到三种退出IEx shell的方法:

  1. 上面提到的<ctrl-c>两次或一次q然后<enter>,
  2. <ctrl-g>然后q+ <enter>,
  3. 最后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之外工作(例如,您可以用来终止测试).

  • 还有`:init.stop`可以优雅地停止erlang VM. (2认同)

raa*_*cer 14

  1. 断开 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 --helpIEx标志-远程shell).

  2. 关闭所连接的节点.

    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.

  • @OnorioCatenacci因为最好的答案太复杂,没有干净的结构,并且不包含链接. (2认同)

小智 5

在 shell 中输入 :c.q() 并快乐