2009-05-16 23 views
6

C'è un modo per effettuare una chiamata rpc a un nodo, ma avere l'output visualizzato su quel nodo, non solo sul nodo chiamante (infatti non lo sarei anche io preoccupato se il nodo chiamante non ha visualizzato l'output).Erlang: RPC a un nodo con output su quel nodo

Pur comprendendo che posso usare

rpc:call(Node, erlang, display, [ someTerm ]). 

e che mostrerà "someTerm" sul nodo, quello che voglio è quello di ottenere il risultato di un metodo eseguito visualizzata sul terminale nodo remoto, in modo che dato il tentativo di eseguire ls su Nodo:

rpc:call(Node, c, ls, []). 

sarà effettivamente scrivere i risultati contenuti di cartelle al terminale di nodo.

L'idea è che posso guidare una presentazione da un singolo nodo, ma i nodi che sto guidando mostrano la cronologia delle azioni su di essi.

+0

rpc: call (Nodo, c, ls, []) mostra il risultato su node() ma non sul nodo . Vuoi dire che vuoi vedere il risultato su Node? La tua ultima frase lo dice. –

risposta

9

Prova ;-)

rpc:call(Node, c, ls, []). 

o quando si desidera visualizzare sul Node

spawn(Node, fun()->group_leader(whereis(user),self()), c:ls() end). 

o molto più divertente esempio, che reindirizzare l'output di processo locale ad un altro terminale di Node

group_leader(rpc:call(Node, erlang, whereis, [user]), self()), 
c:ls(), 
group_leader(whereis(user), self()). 
+0

scuse .. L'ho espresso molto male - Ho ri-espresso –

+0

Ho aggiunto un esempio di come redirezionare l'output su un altro nodo. –

Problemi correlati