当我有 Erlang 进程 ID 时,使用 pid/3
或list_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
function在 recon 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/