Process created by spawn_link/1 do not exit as we expected

8 views
Skip to first unread message

Pengfei Wang

unread,
Sep 28, 2017, 3:08:42 AM9/28/17
to Erlang Questions
Hi all: 

Error ====>:~p~n was printed many times, why?



real log:

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.000 [info] ====>
cmpp_sms_sp_30:1123 Error sms_sp_receiver receive head error,close connection ====>
self:"<0.27996.1553>" Error:{error,closed}

14:07:40.001 [info] ====>
cmpp_sms_sp_30:509 Error exit_receiver ====>
spcode:"230166"
splinkid:"1"
ip:"123.207.73.149"
max:1000
Receiver:<0.27996.1553>

example code:

parent()->
{ok, Socket} = gen_tcp:connect/4,
start_receiver(999, self(), Socket),
gen_tcp:send/2,
gen_tcp:close(Socket).

start_receiver(SpCode, Sender, Socket) ->
spawn_link(fun() -> receiver(SpCode, Sender, Socket) end).

receiver(SpCode, Sender, Socket) ->
case gen_tcp:recv(Socket, 12) of
{ok, Head} ->
case Head of
<<_Rep_Toltal_len:32/integer, Rep_Command_id:32/integer, _Rep_Seq_id:32/integer>> ->

CommandId = erlang:integer_to_list(Rep_Command_id, 16),

case CommandId of
A ->
receiver(SpCode, Sender, Socket);
UnknownCmd ->
receiver(SpCode, Sender, Socket)
end;
_ErrorHead ->
gen_tcp:close(Socket)
end;
Error ->
gen_tcp:close(Socket),
error_logger:info_msg(" Error sms_sp_receiver receive head error,close connection~n self:~p Error:~p~n ",[Error])
end.

Pengfei Wang

unread,
Sep 28, 2017, 4:22:09 AM9/28/17
to Erlang Questions
my english is not very well, can you understand my idea?

在 2017年9月28日星期四 UTC+8下午3:08:42,Pengfei Wang写道:
Reply all
Reply to author
Forward
0 new messages