From ed8124bd452ad2d3d927c2d95ef718fec81a4180 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 29 Oct 2015 13:06:51 +0100 Subject: Trap exit --- counter.erl | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'counter.erl') diff --git a/counter.erl b/counter.erl index 6ecd335..98605f6 100644 --- a/counter.erl +++ b/counter.erl @@ -1,11 +1,17 @@ -module(counter). --export([start/0, count/1, next/0, set/1, stop/0]). +-export([start/0, counter/0, next/0, set/1, stop/0]). + +-define(MAXCOUNT, 32767). start() -> - register(counterPid, spawn(?MODULE, count, [0])). + register(counterPid, spawn_link(?MODULE, counter, [0])). + +counter() -> + process_flag(trap_exit, true), + count(0). -count(N) when N > 32767 -> +count(N) when N > ?MAXCOUNT -> count(0); count(N) -> @@ -15,6 +21,9 @@ count(N) -> count(N+1); {set, New} -> count(New); + {'EXIT', Pid, Reason} -> + io:format("~p: ~p~n", [Pid, Reason]), + exit(normal); {stop} -> exit(normal) end. -- cgit v1.2.3