2

erlang 进程 PID 引用从以如下形式启动的进程返回:

<0.344.0>

有了这样的 PID,你怎么能提取它的三个部分,序列化它,然后再重新组合它们呢?

在我的例子中,我想要:

{A,B,C} = decomposePid(Pid),
% serialize somewhere
% deserialize somewhere
Pid = recompose(A,B,C),

我知道 Pid 可以作为参数等发送,但我有序列化需求,需要真正将这些 A、B、C 值从 Pid 中分离出来。

4

2 回答 2

8

或使用erlang:term_to_binary/1erlang:binary_to_term/1。这取决于您打算如何处理序列化的 pid。用它序列化它pid_to_listlist_to_pid产生仅在使用时在该 erlang 节点中有效的东西,term_to_binary并且binary_to_term在分布式 erlng 系统中有效。然而,在这两种情况下,序列化的 pid 仅在原始 erlang 节点运行时才有效,一旦它终止,序列化的 pid 就失去了意义,因为它所引用的进程已经消失。

于 2013-06-08T22:27:00.877 回答
2

您正在寻找的函数是 erlang:list_to_pid/1 和 erlang:pid_to_list/1。

于 2013-06-08T17:48:26.963 回答