Как завершить процесс с помощью функции цикла? - PullRequest
1 голос
/ 01 июня 2011

Я пишу один модуль, который имеет одну функцию цикла, функция будет отправлять пакет 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 ]

2 голосов
/ 02 июня 2011

Здесь нужно учесть две вещи

  1. Если процесс является владельцем в этом случае вы можете напрямую используйте gen_udp: close (Sock).
  2. Если процесс не является владельцем сокета, используйте gen_udp: controlling_process (Носок, Pid) где Pid - это идентификатор процесса новый владелец розетки. Теперь вы можете используйте gen_udp: close (Sock) из этого процесс. http://www.erlang.org/doc/man/gen_udp.html
0 голосов
/ 01 июня 2011

Чтобы завершить процесс, вы можете

выйти (Pid, kill).

если у вас есть цикл приема, у вас всегда может быть сообщение о завершении работы цикла.

получить отключение-> ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...