2009-05-26 8 views
3

Windows XP Homeで-snameオプションを使用してErlangノードを起動しようとしていますが、erlを実行すると長いエラーメッセージが表示されてしまい、終了します:Windowsで名前付きErlangノードを起動できないのはなぜですか?

>erl -sname allyourcode 
{error_logger,{{2009,5,25},{16,20,57}},"Protocol: ~p: register error: ~p~n",["in 
et_tcp",{{badmatch,{error,econnrefused}},[{inet_tcp_dist,listen,1},{net_kernel,s 
tart_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel, 
init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]} 
{error_logger,{{2009,5,25},{16,20,57}},crash_report,[[{initial_call,{net_kernel, 
init,['Argument__1']}},{pid,},{registered_name,[]},{error_info,{exit,{er 
ror,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[ 
net_sup,kernel_sup,]},{messages,[]},{links,[#Port,]},{dicti 
onary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,610},{st 
ack_size,24},{reductions,490}],[]]} 
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,net 
_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{p 
id,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[[allyourcode,shortn 
ames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]} 
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,ker 
nel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined 
},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent} 
,{shutdown,infinity},{child_type,supervisor}]}]} 
{error_logger,{{2009,5,25},{16,20,57}},std_info,[{application,kernel},{exited,{s 
hutdown,{kernel,start,[normal,[]]}}},{type,permanent}]} 
{"Kernel pid terminated",application_controller,"{application_start_failure,kern 
el,{shutdown,{kernel,start,[normal,[]]}}}"} 

Crash dump was written to: erl_crash.dump 
Kernel pid terminated (application_controller) ({application_start_failure,kerne 
l,{shutdown,{kernel,start,[normal,[]]}}}) 

私はerl_crash.dumpファイルをインクルードしたいと思いますが、かなり長いので、これを行う良い方法はわかりません。

最初は私がファイアウォールの問題を抱えていると思っていました。これは初めて試みたときにファイアウォールが私が行ったさまざまなプログラムに許可を与えるかどうか尋ねました。しかし、私のファイアウォールを無効にしても、私はまだ同じ問題を抱えています。

代わりに-nameを使用してもどちらも役に立ちません。

答えて

4

OSを再起動する必要がある場合もあります。これが真であるかどうかを確認するには、単に別の名前のノードを起動することもできます。

などの完全修飾名を使用する方が一般的です。

ERL -name [email protected] -setcookie KILLER

そして、使用する別のいずれかを起動:

ERL -name [email protected] -setcookie KILLER

や他のノードにpingを実行しよう:

net_adm:ピング('[email protected]' )。

「ピン」メッセージが表示されます。

次に使用

ノード()。

すべての可視ノードを表示します。

+0

私はerlを起動する前にすべてのcmdウィンドウを閉じようとしましたが、うまくいきませんでした。あなたが示唆したように、Windowsを再起動した後、私はerl -sname fooを実行することができました。それは私がプロセスを実行していたerlを意味し、それを知らなかった? – allyourcode

+0

はい、erlangシェルには、シェルが提供する高度な機能を使用せずに、任意の数のプロセスが実行されている可能性があることを忘れないでください。プロセス情報が残っているため、正常に終了していませんでした。 – none

2

すでにその名前でノードを開始していることがわかります。すべてのErlangコンソールウィンドウをシャットダウンして、もう一度試してみてください。

2
  1. 既に登録されている名前を使用していないことを確認する必要があります(これにはErlangが既に請求している名前が含まれます)。

  2. 同じマシン上で、別のユーザーで起動する場合は、Cookieが同じであることを確認してください。

関連する問題