当我有一个Erlang进程ID时,可以使用pid/3
或list_to_pid/1
函数(内部做同样的事情)来获得用于调试目的的进程。
Process = pid(0,4,1). Process = list_to_pid("<0.4.1>").
所以问题是;那港口呢?
有很多功能接口可以接受process()
和port()
数据类型,例如register/2
。因此,我需要知道是否有一种方法可以通过#Port<0.567>
进程的ID(例如)来获取端口。禁止吗?如果是这样,有什么理由吗?
我不知道标准库中有什么可以帮助您解决此问题,但是侦查库中有可以满足您需要的recon_lib:term_to_port/1
函数。例如:
1> {ok,L} = gen_tcp:listen(0, []). {ok,#Port<0.687>} 2> L = recon_lib:term_to_port("#Port<0.687>"). #Port<0.687>
此代码在临时端口上打开一个侦听套接字,并将其存储在variable中L
。然后,它断言,使用模式匹配,即字符串化端口通过的结果#Port<0.687>
至recon_lib:term_to_port/1
返回完全相同的套接字L
。