我有这样的代码:
PID = spawn_link(DistrNode, ......
io:format("~p debug1 ~n",[PID]),
io:format("~p debug2 ~n",[pid_to_list(PID)]),我就像:
<10062.97.0> debug1 "<9453.97.0>“debug2
我希望抓取PID作为字符串,但不像上面那样改变值-这里发生了什么?我看过把pid转换成原子,但是没有函数。
我想得到"<10062.97.0>“
编辑它spawn_link()而不是产生()
发布于 2012-11-11 19:59:40
正在发生的事情是:在节点X上执行对io:format()的两个调用,但是PID是节点Y上的一个进程。对pid_to_list( PID )的调用创建了一个字符串,表示如何从节点X:"<9453.97.0>“引用PID。然后将此字符串发送到I/O流,后者不会进一步更改该字符串。
但是,当在节点X上调用io: format ("~p debug1 ~n",PID)时,格式字符串"~p debug1 ~n“和参数PID以I/O请求的格式发送到与终端对话的节点Z,并在该节点上格式化PID (也使用pid_to_list(PID)生成<10062.97.0> )。注意,只有第一个数字不同;10062是Z用来引用节点Y的数字,而X使用9453将节点Y.0作为第一个数字来表示它是本地节点上的pid。
https://stackoverflow.com/questions/13332181
复制相似问题