gpt4 book ai didi

c - Erlang 进程在尝试自杀时挂起

转载 作者:行者123 更新时间:2023-11-30 14:59:23 26 4
gpt4 key购买 nike

我正在使用此脚本运行我的 erlang 进程

#!/bin/sh
stty -f /dev/tty icanon raw
erl -pa ./ -run thing start -run init -noshell
stty echo echok icanon -raw

我的 Erlang 进程:

-module(thing).
-compile(export_all).

process(<<27>>) ->
io:fwrite("Ch: ~w", [<<27>>]),
exit(normal);
process(Ch) ->
io:fwrite("Ch: ~w", [Ch]),
get_char().

get_char() ->
Ch = io:get_chars("p: ", 1),
process(Ch).

start() ->
io:setopts([{binary, true}]),
get_char().

当我运行 ./invoke.sh 时,我按下按键并看到字符按预期打印。当我点击 escape 时,shell 窗口停止响应(我必须从终端关闭窗口)。为什么会出现这种情况?

最佳答案

当您调用仅终止 erlang 进程的 exit/1 时,不会停止 erlang 运行时系统(beam)。由于您在没有 shell 的情况下运行,因此您会得到窗口没有响应的行为。如果您从任务管理器或通过 pkill 终止 Beam 进程,您将恢复命令行。一个简单的解决方法是更换退出(正常)halt() see doc

关于c - Erlang 进程在尝试自杀时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42792422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com