首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何才能在不中止erl的情况下中止Erlang shell (erl)中的接收语句?

如何才能在不中止erl的情况下中止Erlang shell (erl)中的接收语句?
EN

Stack Overflow用户
提问于 2021-11-22 00:14:39
回答 1查看 47关注 0票数 2

以下代码会使erl挂起:

代码语言:javascript
复制
$ erl
Erlang/OTP 24 [erts-12.1] [source] [64-bit] [smp:6:6] [ds:6:6:10] [async-threads:1] [jit] [dtrace]

Eshell V12.1  (abort with ^G)
1> receive X -> X end.

按ctrl-C组合键将打开一个选项菜单:

代码语言:javascript
复制
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo

但是,我没有发现其中任何一个使我返回到erl提示符。你必须选择"(a)bort“然后重新启动erl来让它崩溃的想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-22 00:51:50

答案就在shell提示符上方的括号中:

代码语言:javascript
复制
(abort with ^G)

如果您按下ctrl-G,您将看到一个用户切换命令提示符。您可以在此提示符下键入h以查看您可以执行的操作:

代码语言:javascript
复制
User switch command
--> h
 c [nn]            - connect to job
 i [nn]            - interrupt job
 k [nn]            - kill job
 j                 - list all jobs
 s [shell]         - start local shell
 r [node [shell]]  - start remote shell
 q                 - quit erlang
 ? | h             - this message

让我们列出作业:

代码语言:javascript
复制
--> j
  1* {shell,start,[init]}

这是运行receive的外壳。您可以使用k终止它,在此之后,j显示没有作业正在运行,因此使用s启动一个新的shell,j随后显示该shell,然后使用c连接到那个新的shell:

代码语言:javascript
复制
--> k 1
--> j
--> s
--> j
  2* {shell,start,[]}
--> c 2
Eshell V12.1  (abort with ^G)
1>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70059682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档