<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Doing exit(Pid, kill) sends an exit signal, of value kill, to the
process so it should be scheduled in the same way as "normal" exit
signals. Generally I think you should be careful if you start special
casing various things as you can get unexpected behavious.<br>
<br>
Robert<br>
<br>
Ulf Wiger (AL/EAB) wrote:
<blockquote
cite="midD4ADC896EC3F5948A9D3899986CEB9DE0271EAC0@esealmw115.eemea.ericsson.se"
type="cite">
<pre wrap="">When you send an exit signal to a process,
it is scheduled in order to receive it.
This goes for 'kill' messages as well, even
though you'd think that they could be
killed right away by the runtime system.
/Uffe
</pre>
<blockquote type="cite">
<pre wrap="">-----Original Message-----
From: <a class="moz-txt-link-abbreviated" href="mailto:owner-erlang-questions@erlang.org">owner-erlang-questions@erlang.org</a>
[<a class="moz-txt-link-freetext" href="mailto:owner-erlang-questions@erlang.org">mailto:owner-erlang-questions@erlang.org</a>] On Behalf Of
Dominic Williams
Sent: den 17 november 2005 23:32
To: '<a class="moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>'
Subject: Uncertain death
Hello,
The following program seems to me to indicate that when a
processes gets killed, there is, for a brief moment,
contradictory information about its state. Specifically, the
information returned by processes() seems to lag behind that
given by is_process_alive().
%%% death.erl
-module (death).
-export ([run/0, server/0]).
run() ->
Pid = spawn (?MODULE, server, []),
exit (Pid, kill),
report (Pid),
timer:sleep(1000),
report (Pid).
report (Pid) ->
io:fwrite("~p alive: ~p; member of processes(): ~p~n",
[Pid, is_process_alive (Pid),
lists:member(Pid, processes())]).
server () ->
receive
hello ->
server();
stop ->
bye
end.
%%% end death.erl
1> c("/Users/dodo/tmp/death", [{outdir, "/Users/dodo/tmp/"}]).
{ok,death}
2> death:run().
<0.35.0> alive: false; member of processes(): true <0.35.0>
alive: false; member of processes(): false ok
Same result under MacOS/R9C and WinXP/R10B
Regards,
Dominic Williams
<a class="moz-txt-link-freetext" href="http://www.dominicwilliams.net">http://www.dominicwilliams.net</a>
----
</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>