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/doctor.erl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 erlang/doctor.erl (limited to 'erlang/doctor.erl') diff --git a/erlang/doctor.erl b/erlang/doctor.erl new file mode 100644 index 0000000..9f69429 --- /dev/null +++ b/erlang/doctor.erl @@ -0,0 +1,25 @@ +-module(doctor). +-export([loop/0]). + +loop() -> + process_flag(trap_exit, true), + receive + die -> exit(doctor); + {monitorize, Process} -> + io:format("Doctor: monitoring ~p.~n", [Process]), + link(Process); + new_mon -> + io:format("Doctor: starting new monitor.~n"), + register(mon, spawn_link(monitor_doctor, loop, [])), + mon ! {mon, self()}; + new_rev -> + io:format("Doctor: starting new revolver.~n"), + register(revolver, spawn_link(roulette, loop, [])); + {'EXIT', _, mon} -> + io:format("Doctor: oh SWEET JESUS CHRIST, my monitor just DIED!~n"), + self() ! new_mon; + {'EXIT', _, revolver} -> + io:format("Doctor: The shooter died, restarting...~n"), + self() ! new_rev + end, + loop(). -- cgit v1.2.3