Modultest:Erlang: spawn_link Prozesse nicht getötet werden, wenn alles heruntergefahren normalerweise
tester() ->
receive
X ->
erlang:display("message.."),
tester()
end.
initialize() ->
spawn_link(?MODULE, tester, []),
erlang:display("Started successfully.").
REPL:
length(erlang:processes()). -> 23
Pid = spawn_link(test, initialize, []).
length(erlang:processes()). -> 24
exit(Pid).
length(erlang:processes()). -> 24
Es scheint, dass der erzeugte Tester Prozess noch läuft! Wie stelle ich sicher, dass alle spawn_link-Prozesse auch beendet werden, wenn ich meine Anwendung beende?
' exit (Pid) 'wird tatsächlich fehlschlagen, weil der Prozess, der 'test: initialize/0' ausführt, fast augenblicklich zurückkehrt. Ist das beabsichtigt? – Dogbert