gen_server documentation

Samuel Rivas <>
Fri Apr 7 12:02:49 CEST 2006


Hi,

Documentation for gen_server:start_link reads:

  "  If Module:init/1 fails with Reason, the function returns
  {error,Reason}. If Module:init/1 returns {stop,Reason} or ignore, the
  process is terminated and the function returns {error,Reason} or ignore,
  respectively"

For gen_server:start it refers to previous definition.

  However, both functions behaves differently: in both cases start_link exits,
  while start returns {error, Reason}:


%%%%
-module(dumb_server).
-behaviour(gen_server).

-export([init/1]).

init(_) ->
        exit(foo).


1> gen_server:start_link(dumb_server, [], []).
** exited: foo **
2> gen_server:start(dumb_server, [], []).
{error,foo}

%%%%
-module(dumb_server).
-behaviour(gen_server).

-export([init/1]).

init(_) ->
        {stop, foo}.


1> gen_server:start_link(dumb_server, [], []).
** exited: foo **
2> gen_server:start(dumb_server, [], []).     
{error,foo}

-- 
	Samuel



More information about the erlang-questions mailing list