Erlang消息给不存在的PID

时间:2015-02-10 11:06:39

标签: erlang

Erlang运行时对发送到不存在进程的消息做了什么?例如,生成一个进程,然后在它终止后,另一个进程向它发送一条消息。

2 个答案:

答案 0 :(得分:5)

邮件被删除。每the documentation

  

如果接收器已经终止,信号将不会到达......

另见this answer from rvirding,他可能知道他在说什么:

  

向pid发送一条消息,指向一个死进程是完全合法的(消息刚刚消失)......

答案 1 :(得分:4)

如果消息发送到PID,则消息将消失在空白中。您甚至可以发送到不存在的PID ...

1> list_to_pid("<0.0.1>").
<0.0.1>
2> v(1) ! foo.
foo

如果消息发送到原子,则原子必须是发送时PID的注册名称,否则发送将崩溃......

3> spawn(fun() -> register(name, self()), then_exit end).
<0.36.0>
4> name ! foo.
** exception error: bad argument
     in operator  !/2
        called as name ! foo