私はエリクシールで遊んで始めました。私は2つのモジュールを作りたいと思っていました。 1つは、メッセージを入力して、それがメッセージを受け取ったことを認める他のプログラムにメッセージを送り、最初のプログラムがメッセージを印刷するように促すメッセージです。エリクシールプロセスからコンソールに印刷
まあ、私は問題に出くわしました。
送信者は以下の通りです:
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
と受信機はここにある:
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
私の最初の問題は、私は私の送信者ループを開始すると、端末がメッセージを入力するように私を促していることで、受信したメッセージは印刷されません。
第2に、「kill」と入力すると、ターミナルがフリーズします。なぜなら、私は:kill応答を処理する方法がわからないからです。
これらの問題の修正に関するヘルプはありますか?
サーバーの終了後にクライアントが何をしたいですか? – Dogbert
私はクライアントも殺されることを望みますが、私はそれをどうやって行うのか分かりません。 – Mascasc