2012-06-13 41 views
0

我想實現一個非常簡單的示例,以便第一次查看分佈式Erlang。於是,我開始在同一臺機器上的兩個節點:分佈式Erlang:瞭解遠程主機和啓動功能

erl -sname dilbert 
erl -sname dogbert 

任務是dogbert節點dilbert使用簡單fun() -> io:format("Hello, World!") end使得dilbert輸出Hello, World!。我想這是很容易與dogbert的外殼:

([email protected])1> spawn(dilbert, fun() -> io:format("HELLO!") end). 
<0.39.0> 

=ERROR REPORT==== 13-Jun-2012::17:49:04 === 
** Can not start erlang:apply,[#Fun<erl_eval.20.82930912>,[]] on dilbert ** 

在相同的外殼,使用nodes().輸出[]。那麼,dogbert顯然不知道dilbert,但爲什麼是這樣呢?或者,我如何讓分佈式erlang中的節點彼此瞭解?

回答

4

有兩個問題:

  1. 您必須設置一個共同的cookie兩個節點,以便進行互動。

    ERL -sname迪爾伯特-setcookie pointyhairedboss
    ERL -sname dogbert -setcookie pointyhairedboss

  2. 您必須指定要連接到節點的主機名。 spawn('dogbert @ yourhostname',fun() - > io:format(「HELLO!」)end)。

+0

由於他在同一臺計算機上(大概來自同一個用戶帳戶)啓動它們,它們應該會自動獲得相同的默認Cookie。 – RichardC