summaryrefslogtreecommitdiff
path: root/counter.erl
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-10-29 13:06:51 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-10-29 13:06:51 +0100
commited8124bd452ad2d3d927c2d95ef718fec81a4180 (patch)
tree06413816431988def5dfad7b4a49cf411219631e /counter.erl
parent515371ecf04c1fd274c6ea6d8f1d60fbefc4587f (diff)
Trap exit
Diffstat (limited to 'counter.erl')
-rw-r--r--counter.erl15
1 files changed, 12 insertions, 3 deletions
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.