2014-05-08 89 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.