3

如何发送消息以使用 Erlang 进行处理?我确实启动了一个进程,输出显示 pid(进程标识符)是<0.39.0>. 我的问题是如何<0.39.0>手动向该进程 ( ) 发送消息。

4

3 回答 3

6

虽然list_to_pid/1确实可以用于构造 PID 并使用它来发送消息,但不鼓励使用它:

此 BIF 旨在用于调试和在 Erlang 操作系统中使用。它不应该在应用程序中使用。

更好的方法是在启动进程时保存 PID:

1> P = spawn(fun() -> receive _ -> ok end end).
<0.34.0>
2> P!hi.
hi
于 2013-01-05T10:26:31.690 回答
3
(emacs@yus-iMac.local)100> P = list_to_pid("<0.39.0>").
<0.39.0>
(emacs@yus-iMac.local)101> P!aaa.
aaa
于 2013-01-05T08:38:25.987 回答
2

除了其他解决方案,REGISTER func 可能会有所帮助。

    register(regpid,spawn(fun() -> receive _ ok end end).
    regpid ! msg.

您可以将 msg 发送到任何地方的 regpid。

于 2013-01-09T04:26:15.623 回答