如何使用循环函数终止进程?

时间:2011-06-01 10:02:31

标签: erlang

我写了一个模块,它有一个循环函数,该函数将永远发送udp数据包。我在erlang控制台中调试程序,我想知道如何关闭UDP套接字? 否则,erlang将始终在控制台中打印调试消息。谢谢!

start() ->
  {ok, Sock} = gen_udp:open(0, []),
  send(Sock).

send(Sock) ->
  gen_udp:send(Sock, "127.0.0.1", 3211, "hello world"),
  timer:sleep(5000),
  send(Sock). 

2 个答案:

答案 0 :(得分:2)

这里有两件事需要考虑

  1. 如果该过程是其所有者 socket。在这种情况下你可以 直接使用gen_udp:close(袜子)。
  2. 如果进程不是套接字的所有者,则使用 gen_udp:controlling_process(袜子,PID) 其中Pid是进程ID 套接字的新所有者。现在你可以 使用gen_udp:close(Sock) 处理。 http://www.erlang.org/doc/man/gen_udp.html

答案 1 :(得分:0)

要终止流程,您可以

出口(PID,杀死)。

如果你有一个接收循环,你总是可以得到一个存在循环的关闭消息。

接收    shutdown->什么都没有。