【问题标题】:how could an erlang port's port info change to undefined?erlang 端口的端口信息如何更改为未定义?
【发布时间】:2012-07-26 15:45:03
【问题描述】:

我得到一个erlang服务器,很多客户端使用tcp连接服务器。

几分钟后,使用 erlang:ports() 和 erlang:port_info(),我可以发现某些端口的 port_info 未定义,并且该端口已关闭。无论如何我找不到从端口中删除它。

那么为什么会发生这种情况,我该如何从 erlang 端口中删除这些未定义的端口?

【问题讨论】:

    标签: erlang erlang-ports


    【解决方案1】:

    如果端口未打开,erlang:port_info/1 函数将返回 undefined。

    您在未打开或已关闭的端口上调用该函数。

    请注意,如果创建端口的 Erlang 进程(connected 进程)终止,端口将自动关闭。

    【讨论】:

    • 感谢回复。在我的服务器中,端口已关闭,返回未定义,但创建此端口的进程仍然存在。然后我杀了进程,但是端口还在,返回undefined。我用exit(normal)杀了进程,是不是错了?或者当它抛出错误可能会导致错误?
    • 还有一个问题,进程还活着的时候端口会自动关闭吗?
    • 你可以通过 erlang:port_close/1 显式关闭一个端口。也许你想分享一些代码?
    • 我的代码太长了,能给我你的email吗?其实好像tcp客户端进程的链接和端口坏了。我使用process_info获取tcp客户端进程信息,大部分都是正常的,但有些没有端口链接。
    • 您可以创建一个 Gist:gist.github.com。对于某些无法与其他用户共享的代码,我不太愿意回答您:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2014-09-14
    相关资源
    最近更新 更多