September 02, 2009

erlang:exit(kill)と補足不可終了シグナル

「プログラミングErlang」の130ページに以下の記述がある。
死因にkillを指定した場合、捕捉不可終了シグナルが送られる。捕捉不可終了シグナルは、送信先のプロセスがシステムプロセスであっても必ず殺す。
にもかかわらず、その後で出てくるサンプルプログラムだと、
link(Pid_B),
exit(kill)
とやっても、プロセスBがシステムプロセスである場合は死なない、という動作例が記述されている。

結論を言うと、捕捉不可終了シグナルは、送信先プロセスを指定した時、つまり
erlang:exit(Pid, kill)
の時は送信されるけど、ブロードキャストの時
erlang:exit(kill)
は送信されないらしい。

この説明が本書の中にはないので、混乱してしまった。

原書のerrataページには、以下のような指摘があった。
Untrappable exit signal is not clearly defined on Pg.163.
To make the definition clear and accurate, it should state that it is UNTRAPPABLE ONLY if the signal is received by the system process Pid if generated as exit(Pid,kill).
The exit(kill) does NOT generate untrappable exit signal.
参考:http://www.pragprog.com/titles/jaerlang/errata

matssaku at 13:01│Comments(0)TrackBack(0)clip!Erlang 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔