Whenever I tinker with message sending and receiving in the shell, I make me this handy small fun (or similar) to ease my life:<br><br>(erl@localhost)1> R = fun () -> receive X -> X after 0 -> no_messages_pending end end.<br>
#Fun<erl_eval.20.21881191><br>(erl@localhost)2> self() ! {a, message}.<br>{a,message}<br>(erl@localhost)3> R().<br>{a,message}<br>(erl@localhost)4> R().<br>no_messages_pending<br>(erl@localhost)5><br><br>
<br>Robby<br><br><div class="gmail_quote">On Mon, Apr 23, 2012 at 8:56 AM, Attila Rajmund Nohl <span dir="ltr"><<a href="mailto:attila.r.nohl@gmail.com">attila.r.nohl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/4/23 吴磊 <<a href="mailto:mjollnir.ray@gmail.com">mjollnir.ray@gmail.com</a>>:<br>
<div class="im">> Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:4:4]<br>
> [async-threads:0] [hipe] [kernel-poll:false]<br>
><br>
> Eshell V5.9.1  (abort with ^G)<br>
> 1> self().<br>
> <0.32.0><br>
> 2> process_flag(trap_exit, true).<br>
> false<br>
> 3>  spawn_link(fun() -> ok end).<br>
> <0.36.0><br>
> 4> process_info(self(), messages).<br>
> {messages,[{'EXIT',<0.36.0>,normal}]}<br>
> 5> receive X -> X end.<br>
> {'EXIT',<0.36.0>,normal}<br>
> 6>  spawn_link(fun() -> ok end).<br>
> <0.40.0><br>
> 7> process_info(self(), messages).<br>
> {messages,[{'EXIT',<0.40.0>,normal}]}<br>
> 8> receive X -> X end.<br>
><br>
> shell SUSPENDING .... WHAT's happed here?<br>
<br>
</div>X was already bound, so you were waiting for {'EXIT',<0.36.0>,normal},<br>
but got {'EXIT',<0.40.0>,normal}<br>
<br>
Too bad the shell can't read my mind, I've spent more hours chasing<br>
"bugs" like this than I'm willing to admit.<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br>