我已经实现了gen_server和supervisor:test_server
和test_sup
。我想从shell/CLI测试它们。我写了他们的start_link
函数,以便他们的名字在本地注册。无法从shell中产生erlang管理程序
我发现我可以从命令行产生test_server
,但是产生的test_sup
根本不允许我与服务器交互。
例如,我可以通过执行酿出test_server
:
1> spawn(test_server, start_link, []).
<0.39.0>
2> registered().
[...,test_server,...]
我可以与服务器进行交互,一切显示正常。
但是,如果我尝试使用test_sup
做同样的事情,那么在我的“CLI进程”(使用registered/0
)中没有注册新的名称/ Pid。我的test_server
似乎已经产生,但我无法与之互动(请参阅Lukas Larsson关于SASL的评论,以了解为什么这是真的)。
我以为我在我的上司编码错误,但开始我的上司的这种方法工作完全正常:
1> {ok, Pid}= test_sup:start_link([]).
{ok, <0.39.0>}
2> unlink(Pid).
true
3> registered().
[...,test_server,test_sup,...]
为什么我可以生成一个gen_server而不是监督者?
更新
我使用的代码可以在this post找到。我使用了两个非常简单的模块echo_server
和echo_sup
。
鉴于代码,这个工程:
spawn(echo_server, start_link, []).
,这并不:
spawn(echo_sup, start_link, []).
你能把你的代码粘贴到什么地方吗? – 2010-05-07 05:53:21