problems spawing processes

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

problems spawing processes

Fredrik Linder-2
Hi

The processes probably gets spawned alright, but there is an error in the first io:format/2 in getMessages/1.

The second argument must be a list, change it to:

io:format("get messages from port ~p~n",[Port]),

and you will most likely get the printout.

Note: the trap_exists only work if the process you spawn is linked (by either using spawn_link or link it explicitly).

/Fredrik

> -----Original Message-----
> From: owner-erlang-questions
> [mailto:owner-erlang-questions]On Behalf Of
> Dietmar Schaefer
> Sent: den 25 januari 2005 16:03
> To: erlang-questions
> Subject: problems spawing processes
>
>
> Hi !
>
>
> I am trying to spawn 2 processes:
>
>
>
> -export([startComm/2, getMessages/1, sendMessages/1]).
>
>
> startComm(ListenPort,SendPort) ->
>     io:format("sendport = ~p~n",  [SendPort]),
>      io:format("listenport = ~p~n",[ListenPort]),
>      
>     register (getProc,spawn(?MODULE, getMessages,   [ListenPort])),
>     register (sendProc,spawn(?MODULE, sendMessages,  [SendPort])),
> %%    process_flag(trap_exit, true),                    %%
> get informed
> when server failed
>
>     io:format("Hello world~n").
>
>
>
> where
>
> %% @doc
> %%    gets messages from 4DP (mainly AuS)
> %%    messages are received as lists of strings
> %%
> getMessages(Port) when integer(Port) ->
>     io:format("get messages from port ~p~n",Port),
>     case gen_tcp:listen(Port, [ {reuseaddr, true},
>                                          {packet, 0},
> {active, false}]) of
>           {ok, ListenSocket} ->
>              io:format(" I listen to socket ~p~n", [Port]),
>          
>              {ok,Sock} = gen_tcp:accept(ListenSocket),
>              {ok, Bin} = do_recv(Sock),        
>                 ok   = gen_tcp:close(Sock);                      
>          
>           {error,Reason}     -> io:format("an error occured
> listening on
> socket  reason : ~p~n",[Reason]);
>           Other              -> io:format("Can't listen to
> socket ~p~n",
> [Other])
>      end.
>
>
> %% @doc
> %%   this is the receiving routine
> %%
> do_recv(Sock) ->
>      case gen_tcp:recv(Sock,0) of
>         {ok,Bin}         ->  io:format("o.k. I got:  ~p~n",
> [decode(Bin)]),                                            
>                              do_recv(Sock);
>          
>           {error,Reason}   -> {error,closed};
>         {EXIT,_}         -> {error,exit}
>      end.
>
>
> and another one in the same manner but none will be started.
>
>
>
> I only get:
>
> sendport = 1235
> listenport = 1234
> Hello world
> ok
>
>
>
> can anyone point me to the right direction ?
>
>
>
> regards
>
>
> Dietmar
>
>
> P.S.
>
> The problem arised after an intoduction of a new module where all
> communication
> takes place
>
>
>
>