So begann ich mit Elixir zu spielen, und ich wollte zwei Module machen. Eine, die Sie auffordert, eine Nachricht einzugeben und dann die Nachricht an das andere Programm zu senden, das bestätigen würde, dass es die Nachricht erhalten hat, die das erste Programm veranlassen würde, die Nachricht auszudrucken.Drucken an Konsole von Elixir Process
Nun, ich habe Probleme.
Der Absender unten:
defmodule PracticeCaller do
def start do
spawn(&sloop/0)
end
def sloop do
pid = :erlang.spawn(&PracticeServer.start/0)
message = IO.gets "Enter a message:"
send(pid, {self, message})
receive do
{_caller, reply} -> IO.puts "#{reply}"
end
sloop
end
end
und der Empfänger ist hier:
defmodule PracticeServer do
def start do
spawn(&loop/0)
end
defp loop do
receive do
{caller, "kill"} -> send(caller, {self, "Process Dead"})
Process.exit(self, :kill)
{caller, _} -> send(caller, {self, "Thank you for your message!"})
end
loop
end
end
Mein erstes Problem ist, dass, wenn ich meine Absender Schleife starten, das Terminal fordert mich auf eine Nachricht eingeben, aber es druckt die empfangene Nachricht nicht.
Zweitens, wenn ich "kill" eingeben, friert das Terminal ein, weil ich nicht sicher bin, wie man eine: kill-Antwort behandelt.
Haben Sie Hilfe bei der Behebung dieser Probleme?
Was soll der Client nach dem Serverausfall tun? – Dogbert
Ich möchte, dass der Client auch getötet wird, aber ich bin mir nicht sicher, wie ich das machen soll. – Mascasc