如何在不中止 erl 的情况下中止 Erlang shell (erl) 中的接收语句?
How can I abort a receive statement in the Erlang shell (erl) without aborting erl?
以下使 erl
挂起:
$ 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 调出一个选项菜单:
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
但是,我没有发现其中任何一个让我返回到 erl
提示符。您是否必须通过选择“(a)bort”然后再次启动 erl
让它崩溃?
答案在 shell 提示符正上方的括号中:
(abort with ^G)
如果您按 ctrl-G,您会看到一个用户切换命令提示符。您可以在此提示符下键入 h
以查看您可以执行的操作:
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
让我们列出职位:
--> j
1* {shell,start,[init]}
那是 shell 运行 你的 receive
。你可以用k
杀死它,然后j
显示没有工作是运行,所以然后使用s
开始一个新的shell,这j
然后显示,然后使用 c
连接到那个新的 shell:
--> k 1
--> j
--> s
--> j
2* {shell,start,[]}
--> c 2
Eshell V12.1 (abort with ^G)
1>
以下使 erl
挂起:
$ 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 调出一个选项菜单:
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
但是,我没有发现其中任何一个让我返回到 erl
提示符。您是否必须通过选择“(a)bort”然后再次启动 erl
让它崩溃?
答案在 shell 提示符正上方的括号中:
(abort with ^G)
如果您按 ctrl-G,您会看到一个用户切换命令提示符。您可以在此提示符下键入 h
以查看您可以执行的操作:
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
让我们列出职位:
--> j
1* {shell,start,[init]}
那是 shell 运行 你的 receive
。你可以用k
杀死它,然后j
显示没有工作是运行,所以然后使用s
开始一个新的shell,这j
然后显示,然后使用 c
连接到那个新的 shell:
--> k 1
--> j
--> s
--> j
2* {shell,start,[]}
--> c 2
Eshell V12.1 (abort with ^G)
1>