2014-05-08 87 views
1

我想寫一個簡單地殺死我的程序的函數。它被稱爲quitChat。但是,當我調用函數messenger:quitChat()時,出現此錯誤。Erlang退出函數?

** exception error: bad argument 
    in function exit/2 
     called as exit(undefined,kill) 
    in call from messenger:quitChat/0 (messenger.erl, line 26) 

到目前爲止我使用這段代碼:

-module(messenger). 
-export([start_server/0, server/1, logon/1, logoff/0, message/2, client/2, 
requestChat/1, quitChat/0]). 

server_node() -> 
    [email protected] 

server(User_List) -> 
    receive 
     {From, logon, Name} -> 
      New_User_List = server_logon(From, Name, User_List), 
      server(New_User_List); 
     {From, logoff} -> 
      New_User_List = server_logoff(From, User_List), 
      server(New_User_List); 
     {From, message_to, To, Message} -> 
      server_transfer(From, To, Message, User_List), 
      io:format("list is now: ~p~n", [User_List]), 
      server(User_List) 
    end. 

start_server() -> 
    register(messenger, spawn(messenger, server, [[]])). 

quitChat() -> 
    exit(whereis(messenger), kill). 
+0

你是什麼,當你調用'whereis(信使)得到'在二郎REPL? – dethtron5000

+0

我得到一個pid @ dethron5000 – user2757849

回答

0

更改您的quitChat這樣:

quitChat() -> 
    case whereis(messenger) of 
     undefined -> ok; % No registered process with name messenger 
     Pid -> exit(Pid, kill) 
    end.