如何解耦然后重构Erlang进程PID <a.b.c> </a.b.c>

时间:2013-06-08 16:26:52

标签: erlang

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

<0.344.0>

有了这样的PID,你如何提取它的三个部分,序列化它,然后重新组合它们?

在我的例子中,我希望:

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

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

2 个答案:

答案 0 :(得分:7)

或使用erlang:term_to_binary/1erlang:binary_to_term/1。这取决于您打算如何处理序列化的pid。使用pid_to_listlist_to_pid对其进行序列化会导致某些内容仅在该erlang节点中有效,而使用term_to_binarybinary_to_term在分布式erlng系统中有效。但是,在这两种情况下,序列化的pid只有在原始的erlang节点运行时才有效,一旦它终止序列化的pid就没有意义,因为它引用的进程已经消失了。

答案 1 :(得分:2)

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