檢視原始碼 slave (stdlib v6.2)

此模組提供啟動 Erlang 從屬節點的函式。

所有由主節點啟動的從屬節點,會在主節點終止時自動終止。在從屬節點產生的所有終端輸出都會送回主節點。檔案 I/O 則透過主節點完成。

在非目前主機的其他主機上的從屬節點,會使用 ssh 程式啟動。使用者必須能夠使用 ssh 連線至遠端主機,而不會被提示輸入密碼。這可以使用多種方式安排(詳細資訊請參閱 ssh 文件)。在與主節點相同的主機上啟動的從屬節點,會繼承主節點的某些環境值,例如目前目錄和環境變數。關於在另一個主機上啟動從屬節點時可以假設的環境,請參閱 ssh 程式的文件。

erl(1) 的命令列上,可以指定 ssh 程式的替代方案,如下所示

-rsh Program

請注意,使用 -rsh 旗標指定的命令會被視為一個可能包含空格的檔案名稱。因此,無法包含任何命令列選項。遠端節點將以 "$RSH" "$REMOTE_HOSTNAME" erl -detached -noinput ... 的形式啟動,因此 erl 命令必須在遠端主機的路徑中找到。

從屬節點會使用與主節點相同之檔案系統。至少,Erlang/OTP 必須安裝在兩台電腦的相同位置,並且使用相同版本的 Erlang。

在 Windows 上執行的節點只能在它執行的主機上啟動從屬節點。

主節點必須是活動的。

摘要

函式

呼叫 pseudo(Master, ServerList)。如果您想從命令列啟動一個節點並設定多個偽伺服器,可以如下所示啟動 Erlang 執行階段系統

啟動多個偽伺服器。偽伺服器是一個具有註冊名稱的伺服器,除了將所有訊息傳遞到在主節點執行的真正伺服器之外,它不做任何事情。偽伺服器只是一個與真正伺服器具有相同註冊名稱的中介者。

relay(Pid) 已過時

執行偽伺服器。此函式永遠不會回傳任何值,並且執行此函式的程序會接收訊息。所有接收到的訊息都會簡單地傳遞給 Pid

start(Host) 已過時

等同於 start(Host, Name),其中 Name 與執行此呼叫的節點相同。

在主機 Host 上啟動從屬節點。主機名稱不一定必須指定為完整合格的名稱;也可以使用簡短名稱。這與分散式 Erlang 節點的名稱的條件相同。

start_link(Host) 已過時

等同於 start_link/3

等同於 start_link/3

以與 start/1,2,3 相同的方式啟動從屬節點,唯一的區別是從屬節點會連結到目前正在執行的程序。如果該程序終止,從屬節點也會終止。

stop(Node) 已過時

停止(終止)一個節點。

函式

連結至此函式

pseudo([Master | ServerList])

檢視原始碼
此函式已過時。slave:pseudo/1 已過時;請改用 'peer' 模組。
-spec pseudo([Master :: node() | (ServerList :: [atom()])]) -> ok.

呼叫 pseudo(Master, ServerList)。如果您想從命令列啟動一個節點並設定多個偽伺服器,可以如下所示啟動 Erlang 執行階段系統

% erl -name abc -s slave pseudo klacke@super x --
連結至此函式

pseudo(Master, ServerList)

檢視原始碼
此函式已過時。slave:pseudo/2 已過時;請改用 'peer' 模組。
-spec pseudo(Master, ServerList) -> ok when Master :: node(), ServerList :: [atom()].

啟動多個偽伺服器。偽伺服器是一個具有註冊名稱的伺服器,除了將所有訊息傳遞到在主節點執行的真正伺服器之外,它不做任何事情。偽伺服器只是一個與真正伺服器具有相同註冊名稱的中介者。

例如,如果您已啟動一個從屬節點 N,並想在此節點上執行 pxw 圖形程式碼,您可以在從屬節點上啟動伺服器 pxw_server 作為偽伺服器。這可以說明如下

rpc:call(N, slave, pseudo, [node(), [pxw_server]]).
此函式已過時。slave:relay/1 已過時;請改用 'peer' 模組。
-spec relay(Pid) -> no_return() when Pid :: pid().

執行偽伺服器。此函式永遠不會回傳任何值,並且執行此函式的程序會接收訊息。所有接收到的訊息都會簡單地傳遞給 Pid

此函式已過時。slave:start/1 已過時;請改用 'peer' 模組。
-spec start(Host) -> {ok, Node} | {error, Reason}
               when
                   Host :: inet:hostname(),
                   Node :: node(),
                   Reason :: timeout | no_rsh | {already_running, Node}.

等同於 start(Host, Name),其中 Name 與執行此呼叫的節點相同。

此函式已過時。slave:start/2 已過時;請改用 'peer' 模組。
-spec start(Host, Name) -> {ok, Node} | {error, Reason}
               when
                   Host :: inet:hostname(),
                   Name :: atom() | string(),
                   Node :: node(),
                   Reason :: timeout | no_rsh | {already_running, Node}.

等同於 start(Host, Name, [])

連結至此函式

start(Host, Name, Args)

檢視原始碼
此函式已過時。slave:start/3 已過時;請改用 'peer' 模組。
-spec start(Host, Name, Args) -> {ok, Node} | {error, Reason}
               when
                   Host :: inet:hostname(),
                   Name :: atom() | string(),
                   Args :: string(),
                   Node :: node(),
                   Reason :: timeout | no_rsh | {already_running, Node}.

在主機 Host 上啟動從屬節點。主機名稱不一定必須指定為完整合格的名稱;也可以使用簡短名稱。這與分散式 Erlang 節點的名稱的條件相同。

啟動的節點名稱變成 Name@Host

從屬節點會重設其 io:user/0 程序,以便在從屬節點產生的所有終端 I/O 都會自動轉送到主節點。此外,檔案伺服器也會轉送到主節點。

引數 Args 用於設定 erl 命令列引數。它會傳遞到新的節點,並可用於多種用途;請參閱 erl(1)

例如,假設您想在主機 H 上啟動一個從屬節點,其節點名稱為 Name@H,並且希望從屬節點具有以下屬性

  • 目錄 Dir 將被新增至程式碼路徑。
  • Mnesia 目錄將設定為 M
  • Unix DISPLAY 環境變數將設定為主節點的顯示。

將執行以下程式碼以實現此目的

E = " -env DISPLAY " ++ net_adm:localhost() ++ ":0 ",
Arg = "-mnesia_dir " ++ M ++ " -pa " ++ Dir ++ E,
slave:start(H, Name, Arg).

函式會回傳 {ok, Node},其中 Node 是新節點的名稱,否則會回傳 {error, Reason},其中 Reason 可以是以下其中之一

  • timeout - 主節點無法與從屬節點取得聯繫。這可能發生在多種情況下

    • 遠端主機上未安裝 Erlang/OTP。
    • 另一個主機上的檔案系統與主節點的結構不同。
    • Erlang 節點具有不同的 Cookie。
  • no_rsh - 電腦上未找到遠端 Shell 程式。請注意,預設使用 ssh,但可以使用 -rsh 旗標覆寫此設定。

  • {already_running, Node} - 已存在名稱為 Name@Host 的節點。

此函式已過時。slave:start_link/1 已過時;請改用 'peer' 模組。
-spec start_link(Host) -> {ok, Node} | {error, Reason}
                    when
                        Host :: inet:hostname(),
                        Node :: node(),
                        Reason :: timeout | no_rsh | {already_running, Node}.

等同於 start_link/3

連結至此函式

start_link(Host, Name)

檢視原始碼
此函式已過時。slave:start_link/2 已過時;請改用 'peer' 模組。
-spec start_link(Host, Name) -> {ok, Node} | {error, Reason}
                    when
                        Host :: inet:hostname(),
                        Name :: atom() | string(),
                        Node :: node(),
                        Reason :: timeout | no_rsh | {already_running, Node}.

等同於 start_link/3

連結至此函式

start_link(Host, Name, Args)

檢視原始碼
此函式已過時。slave:start_link/3 已過時;請改用 'peer' 模組。
-spec start_link(Host, Name, Args) -> {ok, Node} | {error, Reason}
                    when
                        Host :: inet:hostname(),
                        Name :: atom() | string(),
                        Args :: string(),
                        Node :: node(),
                        Reason :: timeout | no_rsh | {already_running, Node}.

以與 start/1,2,3 相同的方式啟動從屬節點,唯一的區別是從屬節點會連結到目前正在執行的程序。如果該程序終止,從屬節點也會終止。

關於引數和回傳值的說明,請參閱 start/1,2,3

此函式已過時。slave:stop/1 已過時;請改用 'peer' 模組。
-spec stop(Node) -> ok when Node :: node().

停止(終止)一個節點。