Есть ли спецификация протокола лидера группы, который обрабатывает ввод-вывод? - PullRequest
5 голосов
/ 12 ноября 2008

В Erlang у каждого процесса есть лидер группы, и когда процесс хочет что-то напечатать (т.е. он вызывает библиотеку io или делает что-то подобное), он отправит сообщение своему лидеру группы.

Мой вопрос: где я могу найти спецификацию этих сообщений? Или вообще, спецификация того, что должен делать лидер группы?

Мне удалось выяснить во время некоторых экспериментов, что иногда процесс отправляет термин {io_request, Sender, GroupLeader, Request}, а ответом является термин {io_reply, GroupLeader, ok}, но могут быть и другие случаи.

Ответы [ 2 ]

6 голосов
/ 17 ноября 2008

Обоснование Эрланга (видео) или (слайды) ; является хорошим источником информации, как и исходный код для user.erl .

Короче говоря:

  {io_request, From, ReplyAs, Request}
  %From is the process to send the reply to, 
  %ReplyAs is any term the caller desires to 
  %match up the request and the response. (returned verbatim in the reply)
  {io_reply, ReplyAs, Reply}

Некоторые запросы в user.erl:

 {put_chars, IoList} % puts the iolist
 {put_chars, M,F,A} % puts the result of apply(M,F,A)
 {get_geometry, 'rows' | 'columns'} % returns the number of rows or columns of the console
 {get_line, Prompt} % calls io_lib:collect_line(Prompt)
 {get_chars, Prompt, Mod, Func, ExtraArgs} 
 {get_until, Prompt, Mod, Func, Args}
 {setopts, Options} % only option supported by user is 'binary' 
                    % (binary mode if present in Options, list mode otherwise)
1 голос
/ 20 октября 2013

Протокол ввода / вывода Erlang подробно описан здесь:

http://www.erlang.org/doc/apps/stdlib/io_protocol.html

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