This is my supervisor.
-module(my_web_app_sup).
-behaviour(supervisor).
-export([start_link/0]).
-export([init/1]).
-define(SERVER, ?MODULE).
start_link() ->
supervisor:start_link({local, ?SERVER}, ?MODULE, []).
init([]) ->
TerminalLogger = {terminal_logger, {terminal_logger, start_link, []}, permanent, 2000, worker, [terminal_logger]}, % Add terminal logger
% gen_event:start({local, error_man}),
% gen_event:add_handler(error_man, terminal_logger, []),
Childern = [TerminalLogger],
RestartStrategy = {one_for_one, 8, 10},
{ok, {RestartStrategy, Childern}}.
handle() ->
receive
'sigtstp' ->
io:format("Exit signal received. Goodbye!\n")
end.
This is my module which im trying to capture exit signals.
-module(terminal_logger).
-moduledoc false.
-behaviour(gen_event).
-export([start/0, init/1,
handle_event/2, handle_call/2, handle_info/2,
terminate/2, code_change/3]).
-record(state,{}).
start() ->
%% add signal handler
case whereis(erl_signal_server) of
%% in case of minimal mode
undefined -> ok;
_ ->
gen_event:add_handler(erl_signal_server, terminal_logger, [])
end.
init(_Args) ->
{ok, #state{}}.
handle_event(sigusr1, S) ->
erlang:halt("Received SIGUSR1"),
{ok, S};
handle_event(sigquit, S) ->
erlang:halt(),
{ok, S};
handle_event(sigterm, S) ->
error_logger:info_msg("SIGTERM received - shutting down~n"),
ok = init:stop(),
{ok, S};
handle_event(_SignalMsg, S) ->
io:format("~n handle_event(_SignalMsg, S) ~n"),
{ok, S}.
handle_info(_Info, S) ->
io:format("~n handle_info(_Info, S) ->~n"),
{ok, S}.
handle_call(_Request, S) ->
io:format("~n handle_call(_Request, S) ~n"),
{ok, ok, S}.
code_change(_OldVsn, S, _Extra) ->
{ok, S}.
terminate(_Args, _S) ->
io:format("~nterminated~n"),
ok.
This my terminal output.
rebar3 shell
===> Verifying dependencies...
===> Analyzing applications...
src/amf_sup.erl:49:1: Warning: function terminate/2 is unused
Erlang/OTP 26 [erts-14.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]
1> terminal_logger:start().
ok
2>
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
(l)oaded (v)ersion (k)ill (D)b-tables (d)istribution
a