[Erlang30]Erlang shell是如何工作的?
一些关于Erlang启动进程的分析:希望你会喜欢。
原英文地址:http://ferd.ca/repl-a-bit-more-and-less-than-that.html
rlwrap
来包装Erlang shell)。关于更高级的REPLs的用法,比如提供Factor,Dr.Racket也不被Erlang shell可视化支持。不可以在shell里面声明内联模块(inline modules),只能在模块内声明。它不是一个REPL(Read-Eval-Print Loop)
(loop (print (eval (read))))
kernel
和stdlib
应用。VM神奇的可以允许这两个模块在启动和退出时彼此依赖。kernel
应用会启动一堆控制VM运行的每个’service'的监控进程--比如:分布式(distribution)。
user
中(声名狼藉是因为每一个新学者会试图起一个叫user的模块,导致很多东西不正常)。目前Erlang默认shell是第三方案,同时也是目前最复杂的方案。erl -oldshell得到。
它是直奔user模块去的。使用其中最简单的那个,它将是一个理解shell如何运作的不错起点。
user
模块基本上处理了REPL中的’read'和‘print'部分。它会收集字符,显示提示,把收集的字符整理后发给’eval'部分来处理,然后再取结果显示出来。

user.erl被按功能切分开4个组件。tty扮演着前面标准输入输出的角色,可以自适应运行在不同的操作系统上。这就是你把字符输入shell到,并进入VM的地方。接下来就是user_drv,它会决定怎样处理这个字符,如果你按下的是
^C
或 ^G,user_drv会进程shell管理模式。
为了理解这个管理模式,我们需要知道:可能会有多个shells在同时运行的,他们可能被user_drv挂在一系列group.erl的进程下。这个列表决定了其中哪一个shell是处理于激活状态的。shell管理可以让你做操作shell本身的各种各样的事。下面我们来看看按下
^G的情况
:User switch command
--> h
c [nn] - connect to job
i [nn] - interrupt job
k [nn] - kill job
j - list all jobs
s [shell] - start local shell
r [node [shell]] - start remote shell
q - quit erlang
? | h - this message
--> s
--> j
1 {shell,start,[init]}
2* {shell,start,[]}
--> c 1
马上让它变得更完善


为什么这些会让它看上去更好?

[Erlang30]Erlang shell是如何工作的?的更多相关文章
- [Erlang18]教练!又发现Erlang Shell里面的神奇函数一只
人嘛,总是想提高效率,创造更多的价值,同时也得到更多的选择空间.可一个人的精力,时间终归是有限的,减少自身重复或无意义工作就显得格外重要! 要么懂得授权,要么把重复的工作交给机器来做: 现实: 美 ...
- [Erlang06]在Erlang shell怎么在目录A下编译目录B下的文件,并把生成文件统一放置目录C?
问题描述: 我们想快速测试一个小功能,第一个反应就是打开Erl shell 直接输入,但是当想测试一个复杂的函数时,一般会写成一个*.erl文件,然后在shell下: cd(FileDir). c(F ...
- erlang shell表格数据对齐
近期在erlang shell做一些測试,为了让測试结果数据显得更直观,想对齐须要打印的数据,做成像表格一样的效果. 開始的想法是在数据中插入tab. 当然,erlang也有对tab的支持,但实际效果 ...
- SIGPIPE导致cronttab和shell脚本等工作异常
cron和sh等可能被某些共享库hook,而这些共享库可能会触发SIGPIPE,导致crontab和shell工作异常,解决办法是程序忽略SIGPIPE或脚本中使用"trap '' SIGP ...
- Erlang Shell调试网络程序真方便
Erlang的shell功能强大,这里我将它当成我的客户端.可以动态的输入你需要发送的内容,也可以动态的接收内容,就像调试器一样,在开发过程中起到很重要的作用.具体使用方式如下: C:\Documen ...
- erlang学习笔记(shell命令)
erlang shell 命令: help(). 可以查看erlang shell内置命令. 比如:m(Mod),可以查看模块Mod. 待续..
- shell脚本-工作练习篇
瞎扯时间 人的惰性真的很难去戒掉,每天工作下班回家后,只想瘫倒在床上,玩玩手游,刷刷抖音,甚至看看无聊至极的“爽文”,对于学习.看书啥的,完全提不起兴趣,也许正是因为如此,我才显得这么平庸而无趣吧. ...
- [Erlang 0105] Erlang Resources 小站 2013年1月~6月资讯合集
很多事情要做,一件一件来; Erlang Resources 小站 2013年1月~6月资讯合集,方便检索. 小站地址: http://site.douban.com/204209/ ...
- 在Windows用Rebar来构建,编译,测试,发布Erlang项目
rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译.测试.发布 Erlang 应用 ...
随机推荐
- Express详解
express() 创建一个express应用程序 var express = require('express'); var app = express(); app.get('/', functi ...
- gSOAP:C++编写服务器端
1.编写头文件cal.h: //gsoap ns service name: calc //gsoap ns service style: rpc //gsoap ns service encodin ...
- 适应移动端 iPhone & Android 微信页面的一些css属性
1.-webkit-tap-highlight-color -webkit-tap-highlight-color:rgba(0,0,0,0);//透明度设置为0,去掉点击链接和文本框对象时默认的灰色 ...
- Vim中nerdtree配置
nerdtree nerdtree,就是一个文件树目录. 配置脚本 "文件树 Plug 'scrooloose/nerdtree' Plug 'Xuyuanp/nerdtree-git-pl ...
- 6 MySQL--表--完整性约束
参考:https://www.cnblogs.com/alice-bj/p/8824693.html 完整性约束: http://www.cnblogs.com/linhaifeng/articles ...
- UNITY 手动定制inspector
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...
- 745. Prefix and Suffix Search 查找最大index的单词
[抄题]: Given many words, words[i] has weight i. Design a class WordFilter that supports one function, ...
- [leetcode]134. Gas Station加油站
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. Y ...
- 5- 如何把MyEclipse中的web项目导入到Eclipse中运行
from: 如何把MyEclipse中的web项目导入到Eclipse中运行 2016年09月12日 20:57:51 dancheren 阅读数:35329 标签: eclipse 更多 个人分类: ...
- Photoshop中的高斯模糊、高反差保留和Halcon中的rft频域分析研究
在Halcon的rft变换中,我们经常可以看到这样的算子组合: rft_generic (Image, ImageFFT2, 'to_freq', 'none', 'complex', Width) ...