是否有处理 IO 的组长协议规范?

2023-12-20

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

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

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


Erlang 基本原理(视频) https://erlangcentral.org/erlang-rationale-2/ or (slides) http://www.erlang-factory.com/upload/presentations/329/EFKR10-ErlangRationale.pdf;是一个很好的信息来源,源代码也是user.erl http://github.com/mfoemmel/erlang-otp/tree/master/lib/kernel/src/user.erl#L182.

简而言之:

  {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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有处理 IO 的组长协议规范? 的相关文章

  • 如何在 Erlang 中执行系统命令并使用 os:cmd/1 获取结果?

    当我尝试执行以下返回错误或在 Windows 上不退出的命令时 我总是得到空列表而不是作为字符串返回的错误 例如 I get os cmd blah 而不是类似的东西 command not found os cmd blah 在 Linu
  • Erlang编译器错误

    我有以下代码 loop Data gt receive Key Value gt Key Value Data Key gt member Key Data 14 loop Data stop gt io format server sto
  • Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)

    目前 我的服务器上有一个使用 Ruby 运行的 Apple 推送通知 我想在 Erlang 中使用一个 因为我想使用一个主管来监视它 有人有任何代码可以帮助我吗 这是我的 Ruby 代码 我不喜欢当前实现的一件事是它似乎无法保持连接 它每天
  • 使用 OTP 原理的非阻塞 TCP 服务器

    我开始学习 Erlang 所以我尝试写 hello world 并发编程 IRC 机器人 我已经使用 Erlang 编写了一个 没有任何 OTP 细节 管理程序 应用程序等行为 我希望使用 OTP 原则重写它 但不幸的是我无法找出使用 OT
  • 当在 erlang 模块上调用“new”时,它会做什么?

    我见过 Erlang 代码中使用了 module name new 但是 module name 模块中没有引用 new 函数 新 有什么作用 它用于 参数化模块 参见here http yarivsblog com articles 20
  • Erlang 中事件流(又名 CEP)的实时关联/分析有什么框架吗?

    想要分析具有某些特征 例如公共来源 的事件流 并在给定的时间窗口内 最终将这些多个事件关联起来并从中得出一些推论 最后启动一些操作 我对复杂事件处理 CEP 的有限了解告诉我 它是此类事情的理想选择 然而 在我迄今为止的研究中 我发现人们将
  • Erlang:如何从体内引用匿名函数?

    In Erlang http en wikipedia org wiki Erlang programming language 有没有办法引用当前正在执行的函数 这对于产生无限循环很有用 spawn fun gt do something
  • Erlang中如何维护状态?

    我见过人们使用口述 命令 记录用于维护我读过的许多博客中的状态 我发现这是一个非常重要的概念 一般来说 我理解维护状态和递归的含义 但是当涉及到 Erlang 时 我对它的处理方式有点模糊 有什么帮助吗 维护状态的最简单方法是使用gen s
  • 为什么使用erts_debug:size/1时atom的内存为零?

    I use erts debug size 1计算erlang VM中atom的内存 但我发现输出为零 谁能解释一下原因 7 gt erts debug size true 0 原因是原子与原子的数据一起保存在原子表中 因此整个节点中只有一
  • Erl 无法连接到本地 EPMD。为什么?

    Erlang R14B04 erts 5 8 5 source 64 bit rq 1 async threads 0 kernel poll false Eshell V5 8 5 abort with G root ip 10 101
  • Erlang:如何将小数转换为填充零的十六进制字符串

    我想在 Erlang 中将 42 基数 10 转换为 000002A 基数 16 我在网上找到了一些提示 io format 8 0B n 42 gt 00000042 And io format 16B n 42 gt 2A 但我似乎无法
  • Erlang get_tcp:recv数据长度

    I user gen tcp recv Socket 0 用于数据接收 但我只能接收1次1418字节 我怎样才能收到发送的数据量 in gen tcp recv Socket 0 您正在询问内核 给我接收缓冲区中现在可用的所有数据 不过 内
  • 如何将列表转换为元组列表?

    我想转换 z z a z z a a z to z 2 a 1 z 2 a 2 z 1 我该怎么做 所以 我需要累积以前的值 它的计数器和元组列表 我已创建记录 record acc previous counter tuples 重新定义
  • Erlang 应该如何处理通用数据?

    假设我正在使用 Erlang 构建游戏服务器 每个用户检查某些内容 例如找到最近的玩家 是很常见的 因此通常有一个管理器类 在上面的例子中 我们使用互斥锁 据我所知 Erlang 通常会为每个 TCP 连接 用户会话 创建新的 Erlang
  • Erlang 如何睡觉(晚上?)

    我想在 Erlang 服务器上每隔几个小时运行一次小型清理过程 我知道计时器模块 我在教程中看到一个示例 使用链式计时器 睡眠命令来等待几天后发生的事件 我觉得这很奇怪 我知道 Erlang 进程与其他语言中的进程相比是独一无二的 但是进程
  • 如何在 Erlang 中将数字转换为单词?

    我发现了一个关于将数字转换为 单词 的有趣问题 代码高尔夫 数字到单词 https stackoverflow com questions 309884 code golf number to words 我真的很想看看你如何在 Erlan
  • Erlang gen_tcp 连接问题

    简单的问题 这段代码 client gt SomeHostInNet localhost to make it runnable on one machine ok Sock gen tcp connect SomeHostInNet 56
  • Cowboy 中的 http 处理程序和 websocket 处理程序之间的通信

    我想在 Cowboy 中创建一个 websocket 应用程序 它从另一个 Cowboy 处理程序获取数据 假设我想结合牛仔的 Echo get 示例 https github com ninenines cowboy tree maste
  • 如何在 Erlang 中将整数列表连接到字符串?

    我有这个元组 如下所示 127 0 0 1 现在我想将该元组作为字符串传递 127 0 0 1 到外部库 地理 IP 库 将此元组转换为字符串的最佳方法是什么 您可以随时使用inet parse ntoa 1 1 gt inet parse
  • 在 Erlang 中实现图灵机

    我有一个小项目 与实现图灵机非常相似 我遇到的基本问题是保存当前配置 例如头部的位置和更多信息 对我来说特别重要的是保留头部位置以使其向前或向后移动 Erlang 解决这个问题的方法是什么 我是 Erlang 新手 但据我探索 OTP ge

随机推荐

  • 如何从一个 Visual Studio 项目创建两个不同的可执行文件

    我有一个主要可执行文件 它根据配置文件中保存的设置运行 我希望能够通过不同的可执行文件更改配置文件中的设置 有没有一种简单的方法可以在一个 Windows 窗体项目中构建这两个不同的可执行文件 这意味着当我按构建时 会在同一解决方案文件夹中
  • 阶乘法导致错误

    我正在尝试获取数字的阶乘值66 但是我的方法给了我一个输出0 但每当我尝试获取阶乘5 这给我带来了输出120 谁能告诉我为什么吗 public static int factorial int n if n 1 return n retur
  • 如何在 Python 中随机分布 N 个质量,使它们遵循 Plummer 密度分布

    我正在用Python工作 我有N恒星 每一颗都有一个太阳质量M 0 我想将这些星星随机分布在一定半径的体积中R 使得密度分布遵循普鲁默模型 http en wikipedia org wiki Plummer model 由以下公式给出 我
  • 使用 databricks-connect 时打开 dbfs 上的文件

    我正在使用 databricks connect 将本地 PyCharm IDE 连接到 Azure Databricks 群集 在我尝试在没有 Spark 上下文的情况下访问文件之前 这一切都工作得很好 例如 dbutils fs put
  • 如何将 io.Reader 转换为 io.ReadCloser? [复制]

    这个问题在这里已经有答案了 我有一个io Reader不需要关闭 stringReader strings NewReader shiny 我想将它传递给接收的方法io ReadCloser func readAndClose source
  • CPU 未充分利用。由于阻塞 I/O?

    我试图找到未充分利用 CPU 的 C 服务器应用程序的瓶颈所在 我认为这可能是由于磁盘 I O 性能不佳造成的 与应用程序本身无关 但我很难从这个假设中得出事实 应用程序从本地 MSMQ 队列读取消息 对每条消息进行一些处理 并在处理消息后
  • 移除嵌入对象时 pullAll

    我有包含以下文档的数据库 gt db bios find name first James pretty id 9 name first James last Gosling birth ISODate 1955 05 19T04 00 0
  • 从 java 运行命令提示符?

    嗨 我想使用 java 从命令提示符运行一些东西 我想进入以下目录C Program Files OpenOffice org 3 program 然后运行soffice headless accept socket host 127 0
  • 如何在 mongodb 中与聚合更新一起设置和取消设置?

    db getCollection name update bid 3860 set tl add multiply intField 24 60 60 1000 dateField unset intField 1
  • 我的 Web 服务器的版本控制

    我正在构建一个基于 Web2Py 的 Web 应用程序 并在远程 EC2 开发服务器上进行大部分开发 我想对整个系统进行版本控制 包括所有 python 模块 网页和 Apache 配置文件 这些文件显然分散在我的 Linux 机器上 但我
  • 如何判断一个变量是分配在栈还是堆中?

    在某处偶然发现这个面试问题 在C中 给定一个变量x 如何确定该变量的空间是在堆栈还是堆上分配的 有什么方法可以以编程方式找到它 而不必通过符号表等 并且查找空间是否在堆栈或堆中分配有任何实际意义吗 不 一般来说不是 你知道gcc吗 fspl
  • 如何在Pygame中画一个半透明的圆圈?

    我正在尝试在 Pygame 中画一个半透明的圆圈 这是我的代码 import pygame pygame init clock pygame time Clock screen pygame display set mode width h
  • Solr DataImportHandler:我可以使用 XPathEntityProcessor 从 xml 属性获取动态字段名称吗?

    我有一些 XML 要摄取到 Solr 中 这听起来像是一个旨在由 DataImportHandler 解决的用例 我想要做的是从一个 XML 属性中提取列名 并从另一属性中提取值 这是我的意思的一个例子
  • 跨流程使用事务

    我正在尝试使用 System Transactions TransactionScope 来协调一组进程 每个进程都执行一些数据库工作 最终 所有进程都需要通过一个父进程以原子方式提交或回滚 不幸的是 到目前为止我所尝试的一切都不起作用 我
  • Maven GWT 2.0 和 Eclipse

    有谁知道使用 maven 和 eclipse 使用新的 2 0 版本的 GWT 创建项目的好指南吗 我在让他们很好地合作方面遇到了很多问题 对于它的价值 我可以使用 Maven Eclipse 插件创建一个 gwt 项目 该项目工作正常 但
  • iOS - 更改 UIBarButtonItem 高度

    UIToolbar 有一个很好的调整大小选项 self navigationController toolbar frame 我想知道是否有人知道更改 UIBarButtonItem 高度的方法 我有一个高度为 117 像素的自定义工具栏
  • Rails where() 数组上的 SQL 查询

    我会尽可能地解释这一点 我对用户帖子有疑问 selected posts Posts where category gt Baseball 我想写下以下声明 这是伪术语 User where user has a post in selec
  • 自定义对话框中的 java.lang.IllegalStateException

    我是 Android 新手 正在开发自定义警报对话框 我想通过单击编辑按钮打开另一个对话框 代码如下 if v getId R id edt order System out println edit buton click System
  • 如何配置 charles-proxy 在 Linux 中与 chrome 一起使用 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试设置 chrome 代理 google chrome proxy server 127 0 0 1 8888 Chrome 打开一个
  • 是否有处理 IO 的组长协议规范?

    在Erlang中 每个进程都有一个组长 当一个进程想要打印一些东西 即它调用io库或做类似的事情 时 它会向其组长发送一条消息 我的问题是 在哪里可以找到这些消息的规范 或者一般来说 明确小组领导者应该做什么 我通过一些实验设法发现 有时该