Erlang:无与伦比的消息在哪里?

时间:2013-06-05 11:59:23

标签: erlang erlang-shell

当尝试将不匹配的消息发送到erlang shell中的生成进程时,我原本期望邮件应保留在邮箱中,但看起来邮箱是空的,为什么?

Erlang R15B02 (erts-5.9.2) [smp:2:2] [async-threads:0]
Eshell V5.9.2  (abort with ^G) 
1> Pid = spawn(fun()->receive stop->stop end end).
<0.33.0>
2> Pid ! msg.
msg
3> erlang:process_info(Pid, messages).
{messages,[]} %% where is the msg?

3 个答案:

答案 0 :(得分:4)

当邮件无法与接收模式匹配时,它会从邮箱移动到保存队列,请参阅http://ndpar.blogspot.se/2010/11/erlang-explained-selective-receive.html以获取有关所发生情况的详细说明。

messages process_info/2参数只显示邮箱内容,AFAIK无法检查保存队列的内容。

答案 1 :(得分:0)

该消息当然在那里,将在后续接收中进行检查。在我看来,使用erlang:process_info(Pid, messages)无法看到它的事实很奇怪

答案 2 :(得分:0)

(ppb2_bs6@esekilvxen245)1> self() ! a.
a
(ppb2_bs6@esekilvxen245)2> erlang:process_info(self(), messages).
{messages,[a]}