erlang - 如何通过 ID 获取 Erlang 端口?

标签 erlang erlang-ports

当我有 Erlang 进程 ID 时,使用 pid/3list_to_pid/1函数(内部执行相同的操作)我可以获取用于调试目的的进程。

Process = pid(0,4,1).
Process = list_to_pid("<0.4.1>").

所以问题是;怎么样ports

有很多函数接口(interface)都接受 process()port()数据类型,例如 register/2 。所以我需要知道是否有一种方法可以像进程一样通过端口 ID(例如 #Port<0.567> )获取端口。是否禁止?如果是这样,有什么原因吗?

最佳答案

我不知道标准库中有什么可以帮助解决这个问题,但是有 the recon_lib:term_to_port/1 functionrecon library这就是你想要的。例如:

1> {ok,L} = gen_tcp:listen(0, []).
{ok,#Port<0.687>}
2> L = recon_lib:term_to_port("#Port<0.687>").
#Port<0.687>

此代码在临时端口上打开一个监听套接字并将其存储在变量 L 中。然后,它使用模式匹配断言传递字符串化端口 #Port<0.687> 的结果。至recon_lib:term_to_port/1返回与 L 完全相同的套接字.

关于erlang - 如何通过 ID 获取 Erlang 端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694629/

相关文章:

interop - Erlang通用二进制格式?有人用吗?

erlang - 无法设置 Mnesia

list - 如何在 Erlang 中编写模拟?

windows - Erlang 项目无法在由 rebar 生成的 Windows 上启动

erlang - 在 Erlang 中执行计算密集型任务而不牺牲可扩展性的最佳方法是什么?

erlang - 为什么 EUnit 将 .beam 文件编译成 .eunit/ebin?

bash - 通过 Erlang 端口调用时,Shell 脚本表现异常

python - Erlport/Python STDOUT 捕获到 Elixir