我正在尝试检查节点从其他节点接收的消息,但是以flush()
之外的其他方式检查,因为消息大小相当大并且没有帮助。另外,我可以看到带有erlang:process_info(self(), messages_queue_len).
的消息,但我想在某种变量中一次提取一条消息以进行调试。
答案 0 :(得分:7)
答案 1 :(得分:1)
receive
是用于从邮箱中获取邮件的erlang原语。
请参阅:http://www.erlang.org/doc/getting_started/conc_prog.html#id2263965
如果您只想在shell中获取第一条消息进行调试,可以尝试定义这样的乐趣:
1> self() ! foo.
foo
2> F = fun() -> receive X -> X end end.
#Fun<erl_eval.20.67289768>
3> F().
foo
答案 2 :(得分:1)
或者您可以使用:
1> F = fun() -> receive X -> {message, X} after 0 -> no_message end end.
#Fun<erl_eval.20.111823515>
2> F().
no_message
3> self() ! foo.
foo
4> self() ! bar.
bar
5> F().
{message, foo}
6> F().
{message, bar}
...防止阻止