2012-02-17 9 views
1

erlangシェルで3つのerlangプロセスが作成され、Pid、Pid2、Pid3というローカルに登録されています。次に、関数 "exit/2"で "Pid"を終了させたい。erlangシェルでexit/2関数を使用

([email protected])62> exit(lsaaa_dispatch,test). %lsaaa_dispatch is the above Pid's local registered name 
** exception error: bad argument 
    in function exit/2 
     called as exit(lsaaa_dispatch,test) 

なぜ例外が発生するのですか? なぜ3つのプロセスがすべて終了するのですか?私はPmanでそれらを見つけることができないので。

答えて

0

exit/2は、用語ではなくpidを受け入れます。カーネルの 'erlang'モジュールで定義されています。

exit(whereis(lsaaa_dispatch), test). 

2番目の質問のうち、これらのプロセスがシェルとどのように関係しているかを考えてください。

+1

はい、3つのプロセスがシェルプロセスにリンクされている場合、シェルにエラーがあるとすべてが終了します。シェル内のすべてのエラーがシェルプロセスを終了させます。新しいものがあなたのために自動的に開始されるので、多くの点でそれに気付かないのです。リンクされたプロセスを殺すことを除いて。 N.B.これはバグではなく、どのように動作するように意図されていましたか。 – rvirding

関連する問題