[erlang-questions] the supervisor 's error when the child process occur 'function_clause' error!!

Bill Wang freecnpro@REDACTED
Thu Apr 16 01:07:58 CEST 2015


Hi,
  Application processes should normally not trap exits.
http://www.erlang.org/doc/man/erlang.html#process_flag-2

Cheers,
Bill
2015年4月15日 下午10:17于 "谈广云" <fw339tgy@REDACTED>写道:

> hi joe,
>
> when i use erlang laguage , i meet a problem.
>
> i use supervisor to manage the child process.
>
> test module is supervisor , the child is my_bank moudle  is gen_server's
> callback .
>
> the code is :
>
> %%%%test module
> -module(test).
> -behaviour(supervisor).
>
> %% ====================================================================
> %% API functions
> %% ====================================================================
> %% Supervisor callbacks
> -export([init/1]).
>
> -export([start_link/0,start_child/0]).
>
> %% ====================================================================
> %% Internal functions
> %% ====================================================================
>
> init([]) ->
> process_flag(trap_exit, true),
> Poker = {my_bank, {my_bank, start, []}, permanent, brutal_kill, worker,
> [my_bank]},
>   {ok, {{one_for_one, 5, 10}, [Poker]}}.
>
> start_link() ->
> supervisor:start_link({local, ?MODULE}, ?MODULE, []).
>
> %%%%% =============
>
> %%%% my_bank module
> -module(my_bank).
>
> -behaviour(gen_server).
> -export([start/0]).
> %% gen_server callbacks
> -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
>  terminate/2, code_change/3]).
> -compile(export_all).
> -define(SERVER, ?MODULE).
>
> start() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
> stop()  -> gen_server:call(?MODULE, stop).
>
> new_account(Who)      -> gen_server:call(?MODULE, {new, Who}).
> deposit(Who, Amount)  -> gen_server:call(?MODULE, {add, Who, Amount}).
> withdraw(Who, Amount) -> gen_server:call(?MODULE, {remove, Who, Amount}).
>
> init([]) ->
> %process_flag(trap_exit, true),
> %gen_server:start({local, my_bank2}, my_bank2, [], []),
> io:format("=====start===== my_bank ~n"),
> {ok, ets:new(?MODULE,[])}.
>
>
> %%%%%%
> i call gen_server:call(my_bank,{new2,inzaghi}).
>
> gen_server:call(my_bank,{new,inzaghi}) is right .
>
> the my_bank will occur a error "function_clause".
>
>
> when the my_bank process occur ' function_clause' error, the supervisor
> can not restat the my_bank process , and quit with no error.
>
>
> This problem has troubled me for a long time, very much look forward to
> your reply.
>
> thanks.
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150416/4d60b481/attachment.htm>


More information about the erlang-questions mailing list