测试代码
1 -module(testmonitor).
2 -compile(export_all).
13 hello3()->
14 receive
15 {Pid, T} ->
16 io:format("receive....~p~n", [T]),
17 S = integer_to_list(T),
18 io:format("receive.. Pid=~p..s=~p~n", [Pid, S]),
19 Pid ! {integer_to_list, S},
20 hello3()
21 end.
测试结果:
---------------没有使用-- erlang:monitor 当出现转换错误时收到的是timeout----------
39>
39> f(),Pid = spawn(testmonitor, hello3,[]).
<0.85.0>
40> f(F),F = fun() ->f(A), receive A->A after 3000-> timeout end end.
#Fun<erl_eval.20.21881191>
41> Pid ! {self(),a2}, F().
receive....a2
=ERROR REPORT==== 28-Nov-2012::18:55:09 ===
Error in process <0.85.0> with exit value: {badarg,[{erlang,integer_to_list,[a2]},{testmonitor,hello3,0}]}
timeout
42>
42>
42>
-使用-- erlang:monitor 当出现转换错误时收到的是{'DOWN', MonitorRef, Type, Object, Info}----
42>
42> f(),Pid = spawn(testmonitor, hello3,[]).
<0.89.0>
43> f(F),F = fun() ->f(A), receive A->A after 3000-> timeout end end.
#Fun<erl_eval.20.21881191>
44> R=erlang:monitor(process, Pid).
#Ref<0.0.0.255>
45> Pid ! {self(),2}, F().
receive....2
receive.. Pid=<0.59.0>..s="2"
{integer_to_list,"2"}
46> Pid ! {self(),3}, F().
receive....3
receive.. Pid=<0.59.0>..s="3"
{integer_to_list,"3"}
47> Pid ! {self(),a2}, F().
receive....a2
{'DOWN',#Ref<0.0.0.255>,process,<0.89.0>,
{badarg,[{erlang,integer_to_list,[a2]},
{testmonitor,hello3,0}]}}
=ERROR REPORT==== 28-Nov-2012::18:55:46 ===
Error in process <0.89.0> with exit value: {badarg,[{erlang,integer_to_list,[a2]},{testmonitor,hello3,0}]}
48> Pid ! {self(),3}, F().
timeout
49>
分享到:
相关推荐
10. **代码复用与模块化**:Erlang的模块化设计鼓励代码重用,使得游戏后端的各个组件可以独立开发和测试,提高了开发效率和代码质量。 综上所述,这个千W流水的Erlang游戏后端项目展示了如何利用Erlang的优势来...
现在我们来深入探讨如何进行Erlang节点的连通测试以及如何在需要通信时建立连接。 ### 1. Erlang节点的连接原理 在Erlang中,节点之间的连接是基于TCP/IP协议的。每个Erlang节点都有一个唯一的名称,通常格式为`...
2. **链接和监视器的局限性**:Erlang中的链接(link)和监视器(monitor)机制可以用来检测进程失败并通知其他进程,这对于构建健壮的应用程序至关重要。然而,这些机制并不能确保进程语义上的正确性。例如,如果一个...
从给定的Erlang测试题中,我们可以提炼出一系列重要的Erlang编程知识点,包括ETS表类型、列表操作、进程通信与监控、模块功能、模式匹配、异常处理、记录结构以及网络编程。 ### ETS表类型 在Erlang中,**ETS ...
- **商用产品的验证**:Erlang已经被众多商业产品采用,并经过了长时间的实际测试。 #### 高级网络程序要素与ERTS实现 - **CPU管理**:ERTS支持多核CPU,每个核心有一个调度器,实现负载均衡。每个调度器有自己的...
**Erlang Debugger** 是一个图形化工具,用于调试和测试 Erlang 程序。它允许用户设置断点、单步执行代码以及查看和修改变量值等功能。本文将详细介绍 Debugger 的主要功能及其使用方法。 #### 二、调试器介绍 ###...
- **单向链接(monitor)**:Erlang 进程间通信的一种机制,用于监视其他进程的状态。 - **二进制数据处理(binaries/bitsyntax)**:Erlang 处理二进制数据的特殊语法。 - **列表推导(List Comprehensions)**:一...
Elixir 是一种功能强大的编程语言,它基于 Erlang VM(BEAM)运行,适用于构建分布式、容错且高效的应用程序。在 Elixir 社区中,`Mix` 是一个核心工具,它负责项目的初始化、编译、测试以及提供了一系列的任务来...
监控方面,Erlang VM提供了如observer和vm_monitor等工具,可以帮助开发者了解系统性能、进程状态以及可能出现的问题。 总结来说,"server7"是一个基于Erlang的Web服务器实例,它的构建和运行涉及到了Erlang的基本...