erlang 如何手动发送消息到我刚刚产生的进程?

wh6knrhe  于 2022-12-08  发布在  Erlang
关注(0)|答案(3)|浏览(136)

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

20jt8wwn

20jt8wwn1#

虽然list_to_pid/1确实可以用于构造PID并使用它来发送消息,但不鼓励使用它:
此BIF用于调试和Erlang操作系统。不应在应用程序中使用。
更好的方法是在启动进程时保存PID:

1> P = spawn(fun() -> receive _ -> ok end end).
<0.34.0>
2> P!hi.
hi
ztyzrc3y

ztyzrc3y2#

(emacs@yus-iMac.local)100> P = list_to_pid("<0.39.0>").
<0.39.0>
(emacs@yus-iMac.local)101> P!aaa.
aaa
brc7rcf0

brc7rcf03#

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

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

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

相关问题