Beginner OTP question

Bill Mill <>
Fri Feb 18 04:25:18 CET 2005


Hey everyone, all I want to do is get a very simple example of two
erlang processes talking to each other. The only additional
complication is that I want one of them to be a gen_server.

I have written a minimal OTP gen_server that looks like:

%%%%%%%%%%%  myserver.erl %%%%%%%%%%
-module(myserver).

-behaviour(gen_server).

-export([start/0, init/1, send/0, handle_call/3]).

start() ->
    gen_server:start({global, myserver}, myserver, [], []).

init(_Args) ->
    {ok, ""}.

send() ->
    gen_server:call(myserver, send).

handle_call(send, From, _State) ->
    io:format("send called from ~p", [From]),
    {reply, "Thanks for calling", ""}.
%%%%%%%% end myserver.erl %%%%%%%%%

and then started it like:

%%%%%%%%%%%%
/c/code/erlang/myserver$ erl -sname hello
Erlang (BEAM) emulator version 5.4.3 [source] [hipe]

Eshell V5.4.3  (abort with ^G)
()1> myserver:start().
{ok,<0.37.0>}
%%%%%%%%%%%%

How would I go about starting another process and getting it to
communicate with this server? Here's what I expect to work, which
obviously doesn't:

%%%%%%%%%%%%
/c/code/erlang/test$ erl -sname gbye
Erlang (BEAM) emulator version 5.4.3 [source] [hipe]

Eshell V5.4.3  (abort with ^G)
()1> {myserver, } ! send.
send
%%%%%%%%%%%%

Am i missing something fundamental here? How could I get "gbye" to
talk to "hello"? Is there something wrong with the server?

Peace
Bill Mill
bill.mill at gmail.com



More information about the erlang-questions mailing list