从shell启动Erlang模块时崩溃

从shell启动Erlang模块时崩溃,erlang,Erlang,获取了一个模块,该模块应作为tcp服务器在后台持续运行,以等待和服务连接 当我首先运行erlang shell然后调用我的模块来启动模块时,它工作正常 但是,如果我直接通过erl-s或-eval-run等运行它,则监控tcp服务器的主管会抱怨右侧不匹配。{error,closed}并失败 系统:Ubuntu18 更新: 更新:目前由解除链接的主管解决,将来将使用适当的版本。很难帮助您,因为您没有发布代码,但我猜您有一个gen\u tcp:recv/2,3调用,但某个地方没有处理{error,c

获取了一个模块,该模块应作为tcp服务器在后台持续运行,以等待和服务连接

当我首先运行erlang shell然后调用我的模块来启动模块时,它工作正常

但是,如果我直接通过erl-s或-eval-run等运行它,则监控tcp服务器的主管会抱怨右侧不匹配。{error,closed}并失败

系统:Ubuntu18

更新


更新:目前由解除链接的主管解决,将来将使用适当的版本。

很难帮助您,因为您没有发布代码,但我猜您有一个
gen\u tcp:recv/2,3
调用,但某个地方没有处理
{error,closed}
,也许它不让它等待连接,感觉就像它在返回我之前终止运行的代码一样,它不应该@SteveVinoskiA closed listen socket使
接受
返回
{error,closed}
,所以确保拥有listen socket的进程没有死亡,并将该套接字一起取下。这就是问题所在,为什么它在直接使用erl-s时会死掉,而在从erlang shell启动时却不会死掉?我必须看看你的代码,看看你是如何使用shell来回答这个问题的。很难帮助你,因为你没有发布你的代码,但我猜你有一个
gen\u tcp:recv/2,3
调用的地方没有处理
{error,closed}
。问题似乎在accept上,也许它不让它等待连接,感觉就像它在返回我之前终止运行的代码,它不应该@SteveVinoskiA closed listen socket使
接受
返回
{error,closed}
,因此,请确保拥有侦听套接字的进程没有死亡,也没有将该套接字一起拆下。这就是问题所在,为什么它在直接使用erl-s启动时会死亡,而在从erlang shell启动时不会死亡?我必须查看您的代码,并查看您如何使用shell才能回答这个问题。