【问题标题】:Erlang: is there an API to 'epmd'?Erlang:是否有“epmd”的API?
【发布时间】:2010-12-01 11:47:24
【问题描述】:

有没有办法查询 epmd 守护进程管理的名称表?

nodes() 函数在这方面不是很有帮助。

注意:我正在寻找一个 API 除了来解析通过 stdout 生成的输出。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    要查询对 epmd 可见的节点,请调用:

    EpmdModule = net_kernel:epmd_module().  % erl_epmd by default
    EpmdModule:names().
    

    获取已连接节点及其端口的列表:

    erlang:system_info(dist).
    erlang:system_info(dist_ctrl).
    

    第一次调用以crash dump 格式返回表格。如果您有兴趣获取实际端口,请使用第二个。

    【讨论】:

    • 这应该适用于具有短名称的节点吗?这主要是我使用的,我没有得到预期的结果。
    • 确保节点已连接,例如调用 net_adm:ping(mynode@localhost)。为我工作。
    • 我应该更明确一点:我不想明确地“连接”节点。我只想知道在“短名称域”范围内可以访问哪些节点。
    • 对不起,你的例子与 nodes() 让我对你的意思感到困惑......我在答案之上添加了你需要的调用。
    • 太棒了!再次感谢 Zed!
    【解决方案2】:

    你会得到与 Zed 的代码相同的答案:

    net_adm:names()
    

    我不知道这是否是一种更标准的做法。

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 2011-08-07
      • 2014-03-26
      • 2017-03-04
      • 2013-06-23
      • 2021-05-06
      • 2014-12-05
      • 2020-11-22
      • 1970-01-01
      相关资源
      最近更新 更多