以下代码会使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来让它崩溃的想法吗?
发布于 2021-11-22 00:51:50
答案就在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]}这是运行receive的外壳。您可以使用k终止它,在此之后,j显示没有作业正在运行,因此使用s启动一个新的shell,j随后显示该shell,然后使用c连接到那个新的shell:
--> k 1
--> j
--> s
--> j
2* {shell,start,[]}
--> c 2
Eshell V12.1 (abort with ^G)
1>https://stackoverflow.com/questions/70059682
复制相似问题