簡體   English   中英

無法在Erlang中的另一個節點上生成進程

[英]Unable to spawn process on another node in Erlang

當我嘗試使用以下方法在單獨的節點上創建新進程時

Pid = spawn(mynode, mymodule, myfunction, [self()])

myfunction/1已導出),出現此錯誤:

Error in process <0.10.0> on node 'no@de1' with exit value:
{undef,[{mymodule, myfunction, [<33.64.0>], []}]}

我嘗試設置-compile(export_all)標志,但是假設錯誤日志中有其他花括號,則不是這種情況。 我不知道是什么導致錯誤,也不知道該怎么辦。

您得到的錯誤是“沒有模塊'mymodule'和/或沒有函數'mymodule:myfunction / 1'”。
這意味着mymodule尚未加載到單獨節點的代碼服務器中。
要加載mymodule的代碼,您需要類似此代碼段此函數的內容

您是否檢查模塊mymodule在no @ de1的路徑中?

使用spawn(mynode,mymodule,myfunction,[self()])刷新進程時,VM需要在執行代碼之前先加載代碼。

如果以這種方式使用spawn(Node, Fun)這樣的高階函數(一個有趣的函數spawn(Node, Fun) ,則在路徑中包含代碼並不是必須的(但要注意,在函數定義中對函數的任何調用都必須是在遠程節點上解決)

轉到no @ de1並運行m(mymodule). 它應闡明該模塊是否可加載以及導出哪些功能。

還:檢查另一個節點是否可達。 在其上執行net_adm:ping

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM