我试图在Windows XP Home中使用-sname选项来启动一个命名的Erlang节点,但是当我运行erl时,它会打印出一个很长的错误信息,我不明白,然后退出:
> erl -sname allyourcode {error_logger,{{2009,5,25},{16,20,57}},“Protocol:〜p:register error:〜p〜n”,[“in et_tcp”,{{badmatch,{错误,ECONNREFUSED}},[{inet_tcp_dist,听,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,{退出,{ER ROR,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{祖先,[ net_sup,kernel_sup,]},{消息,[]},{链接,[#端口,]},{dicti onary,[{longnames,假}]},{trap_exit,TRUE},{状态,运行},{heap_size,610},{ST ack_size,24},{减less,490}],[]]} {error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{主pipe,{本地,净 _sup}},{errorContext,START_ERROR},{原因,{ '退出',nodistribution}},{罪犯,[{P ID,未定义},{名称,net_kernel},{MFA,{net_kernel,START_LINK,[[allyourcode,shortn 埃姆斯]}},{启动Restart_type,永久},{关机,2000},{CHILD_TYPE,工人}]}]} {error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{主pipe,{本地,KER nel_sup}},{errorContext,START_ERROR},{原因,关机},{罪犯,[{PID,未定义 },{名称,net_sup},{MFA,{erl_distribution,START_LINK,[]}},{启动Restart_type,永久} {关机,无限},{CHILD_TYPE,监}]}]} {error_logger,{{2009,5,25},{16,20,57}},std_info,[{应用,内核},{退出,{S hutdown,{内核,启动,[正常,[]]}}},{型,永久}]} {“Kernel pid terminated”,application_controller,“{application_start_failure,kern EL,{关机,{内核,启动,[正常,[]]}}}“} 崩溃转储写入:erl_crash.dump 内核pid终止(application_controller)({application_start_failure,kerne 升,{关机,{内核,启动,[正常,[]]}}})
我想包含erl_crash.dump文件,但是我不知道这样做的好方法,因为它很长。
起初,我以为我遇到了防火墙问题,因为我第一次试图这样做,我的防火墙问我是否会允许我使用不同的程序, 但是,即使禁用了我的防火墙,我仍然有同样的问题。
使用名称,而不是似乎也帮助。
是的,你甚至可能需要重新启动你的操作系统 – 为了检查是否是真的,你也可以简单地启动一个不同名称的节点,通常最好使用完全限定的名字,比如:
erl -name rambo@127.0.0.1 -setcookie KILLER
然后,开始另一个使用:
erl -name terminator@127.0.0.1 -setcookie KILLER
并尝试ping其他节点:
net_adm:中国平安('rambo@127.0.0.1' )。
你应该得到一个'pong'的信息。
下次使用
节点()。
看到所有可见的节点。
我想你会发现你已经用这个名字开始了一个节点。 尝试关闭所有的Erlang控制台窗口,然后重试。
您需要确保您没有使用已经注册的名称(当然):这包括Erlang已经声明的任何名称。
如果你是在同一台机器上,但在不同的用户下,请确保你的cookies是一样的。