From 5d8c20c0a91dbd58a1676581c4374ecb67e639a7 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Fri, 11 May 2012 00:49:36 +0200 Subject: [Erlang] Día 3 (1/2) --- erlang/monitor_doctor.erl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 erlang/monitor_doctor.erl (limited to 'erlang/monitor_doctor.erl') diff --git a/erlang/monitor_doctor.erl b/erlang/monitor_doctor.erl new file mode 100644 index 0000000..537f59a --- /dev/null +++ b/erlang/monitor_doctor.erl @@ -0,0 +1,20 @@ +-module(monitor_doctor). +-export([loop/0]). + +loop() -> + process_flag(trap_exit, true), + receive + die -> exit(mon); + {monitorize, Doctor} -> + io:format("Monitor: monitoring ~p.~n", [Doctor]), + link(Doctor); + new_doc -> + io:format("Monitor: starting new doctor.~n"), + register(doc, spawn_link(doctor, loop, [])), + doc ! {monitorize, self()}, + doc ! new_rev; + {'EXIT', From, _} -> + io:format("Monitor: doctor ~p died, restarting.~n", [From]), + self() ! new_doc + end, + loop(). -- cgit v1.2.3