5

在 Erlang 中,每个进程都有一个组长,当一个进程想要打印一些东西时(即它调用 io 库或做类似的事情),它会向它的组长发送一条消息。

我的问题是,我在哪里可以找到这些消息的规范?或者一般来说,组长应该做什么的规范?

我通过一些实验设法发现,有时该过程会发送一个{io_request, Sender, GroupLeader, Request}术语,答案是一个{io_reply, GroupLeader, ok}术语,但可能还有其他情况。

4

2 回答 2

6

Erlang 基本原理(视频)(幻灯片)是一个很好的信息来源, 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)
于 2008-11-17T18:59:03.283 回答
1

Erlang I/O 协议在这里详细描述:

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

于 2013-10-20T15:56:57.290 回答