【问题标题】:How to quit after run IO.read(:stdio, :all) in the Elixir iex?在 Elixir iex 中运行 IO.read(:stdio, :all) 后如何退出?
【发布时间】:2018-11-17 00:39:27
【问题描述】:

我需要测试一些输入数据流,并使用'IO.read',但输入数据后我无法退出此模式,CTRL-Z/X/C/D 没有帮助(它终止了整个即)。那么这个模式的EOF命令如何正确呢? 谢谢!

【问题讨论】:

  • 对于任何 IO 读取操作,正确的 EOF 终止将是 ^D
  • 显然,由于未知原因,它在iex会话中不起作用。

标签: io elixir eof elixir-iex


【解决方案1】:

TL;DR: 使用^G,后跟ji [nn]c [nn]


erliex shell 中,您总是可以^G 进入“用户切换命令”模式。在此处输入h 寻求帮助。

iex|1 ▶ IO.read :stdio, :all

^G
User switch command
  --> j
    1* {erlang,apply,[#Fun<Elixir.IEx.CLI.1.96155272>,[]]}
  --> i 1
  --> c 1
{:error, :interrupted}

iex|2 ▶

旁注:正确的EOF 终止在所有终端中都是^D。老实说,我不知道为什么它在 erl/iex 控制台中无法按预期工作。

【讨论】:

  • 奇怪的是,这似乎不适用于 MacOS 10.13。在c 1 之后它没有返回值,它只是进入与按下^G 之前相同的状态。
  • @Dogbert 哦,谢谢你的敏锐眼光;我复制粘贴了我的一个实验,而不是最后一个成功的实验。在切换到它之前应该中断工作。已更新。
  • 由于所有输入都进入了您的IO.read,因此您的代码有责任以某种方式使这些数据可用。有人可能会使用 ETS,或Agent,或类似的。
猜你喜欢
  • 2019-03-26
  • 2021-04-15
  • 2021-03-22
  • 2017-11-16
  • 2017-08-10
  • 2016-10-22
  • 2016-10-21
  • 2021-06-27
  • 2017-04-09
相关资源
最近更新 更多