`
mryufeng
  • 浏览: 982234 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

erl命令行工具链的设计思路

阅读更多
erlang otp标准发布包里面的命令行工具都在bin目录下
dialyzer 
erlc 
escript 
typer

erlang的这些命令行工具基本上都是erl模块的c的wrapper, 最后都是调用erl来运行相应的模块完成任务。

实验如下:

root@nd-desktop:~# touch test.erl

root@nd-desktop:~# erlc -d test.erl
erl -noinput -mode minimal -boot start_clean -s erl_compile compile_cmdline @cwd /root @files test.erl

首先crack erts/etc/common/escript.c:33  static int debug = 1; 让之显示调用参数
root@nd-desktop:~# escript test.erl
erl +B -boot start_clean -noshell -run escript start -extra test.erl

我们可以清楚的看到是如何调用相应的模块的。

那我们再看下 erl

root@nd-desktop:/usr/src/otp_src_R13B03# cat bin/erl
#!/bin/sh
#
# %CopyrightBegin%
#
# Copyright Ericsson AB 1996-2009. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# %CopyrightEnd%
#
ROOTDIR=/usr/src/otp_src_R13B03
BINDIR=$ROOTDIR/bin/i686-pc-linux-gnu
EMU=beam
PROGNAME=`echo $0 | sed 's/.*\///'`
export EMU
export ROOTDIR
export BINDIR
export PROGNAME
exec $BINDIR/erlexec ${1+"$@"}

这个erl程序其实是个shell script, 简单的设置下环境变量 然后调用erlexec来调用相应的VM。

但是为什么其他的都是binary程序, 唯独erl是script呢。 我能想出的唯一理由是: OTP team的人为了我们方便修改erl的行为 特地用脚本来写, 这样用户就可以很方便的定制erl.

如果我的猜测没错的话,那么erlang真的很细心。


分享到:
评论
1 楼 yuhaitao6688 2011-10-13  
您好,我现在想在erl里面调用一个shell脚本,这个在 erlang里面是怎么实现的啊

相关推荐

    计算ERL的小工具计算ERL

    计算ERL的小工具计算ERL的小工具计算ERL的小工具计算ERL的小工具

    Erl_B表查询小工具

    **Erl_B表查询小工具** 是一个专为处理Erl_B数据的实用程序,它提供了用户友好的界面,使得对Erl_B表的查询变得简单而高效。Erl_B通常指的是Erlang B模型,这是一个在电信行业中广泛使用的数学模型,用于估算交换机...

    GSM网络优化中容量Erl计算工具

    N(ch)表示信道数,旁边的按钮分别表示百、十、个位,从0-999,也可直接输入,B(GOS)表示服务等级(拥塞),一般为0。02,按Erlang按钮可得到话务量,Erl/subs 表示每用户话务量,#of subscribers表示容纳用户数。

    erp设计ERL图篇

    erp设计ERL图篇.doc

    log4erl-0.9.0

    《log4erl-0.9.0:Erlang日志管理的高效工具》 在Erlang编程环境中,日志管理是不可或缺的一部分,它能够帮助开发者追踪系统运行状态,定位并解决问题。log4erl就是这样一个专门针对Erlang的日志库,它的版本0.9.0...

    erl10.5.rar

    6. ** OTP**:OTP是Erlang的生态系统,包含了标准库、开发工具和设计原则。其中的Mnesia数据库、Supervisor(监督树)和GenServer等组件,为构建可靠的分布式系统提供了基础架构。 RabbitMQ作为Erlang的一个典型...

    PZ-ERL34系列高频变压器.pdf

    高频变压器是电子电路中非常重要的元件,其主要作用是通过电磁感应来转换交流电压和电流的大小。PZ-ERL34系列高频变压器...制造商东莞市品展电子有限公司提供的信息则为采购方和设计工程师提供了可靠的供应链联系渠道。

    Erl B表查询小工具

    Erl B表查询小工具,日常优化常用,对网优人员有用。

    PZ-ERL35系列高频变压器.pdf

    PZ-ERL35系列高频变压器便是针对这类应用设计的一类产品,它具有独特的结构和性能特点,使其在开关电源、脉冲变压器和电子镇流器等领域中得到了广泛应用。 首先,让我们来解释一下高频变压器的一些基础知识。高频...

    erl+rabbitMQ

    3. 配置与管理:使用RabbitMQ提供的命令行工具或Web管理界面进行用户、权限、队列、交换器等配置。 4. 客户端连接:最后,编写应用代码,使用相应的客户端库连接到RabbitMQ,实现消息的发送与接收。 通过以上介绍...

    erlang版本的protobuf(erl_protobuffs)

    3. **集成性**:由于Erlang主要用于构建分布式系统,`erl_protobuffs`的设计考虑到了Erlang的通信模型,使得与其他Erlang进程的交互更为流畅,尤其适合处理大规模并发场景下的数据交换。 **使用erl_protobuffs** 1...

    erl_nif 扩展erlang的另外一种方法

    2. **程序设计**:提示文档将涵盖Erlang编程的特定方面,特别是与erl_nif相关的部分。 3. **nif**:NIF(Native Implemented Functions)是Erlang中的一个概念,指的是使用C或其他低级语言编写的函数,通过erl_nif库...

    erlang日志应用log4erl(非sasl)

    用不惯sasl的,可以用log4xxx的erlang版,log4erl。 log4erl Manual: =============== TOC: ==== 1. Features 2. Installation 3. Usage 4. API 5. Configuration 6. Known issues 7. Future development 8. ...

    rabbitmq和erl集合最新版.zip

    5. 使用RabbitMQ的命令行工具或Web管理界面进行管理和监控。 最后,学习和使用RabbitMQ,你需要掌握AMQP协议的基础,理解RabbitMQ的各种组件和配置选项,以及如何在应用程序中集成RabbitMQ客户端库。通过实践,你...

    PZ-ERL28系列高频变压器.pdf

    最后,东莞市品展电子有限公司提供的这款PZ-ERL28系列高频变压器,从提供的规格参数来看,设计者可以在其提供的多种尺寸和类型中,根据具体的应用需求和电路设计参数,挑选出最适合的高频变压器型号,以确保最终产品...

    PZ-ERL42系列高频变压器.pdf

    - ERL42系列变压器设计上能够适应高功率输出且具备较小漏感的特性。 2. 高频变压器的应用领域: - 开关电源变压器:这是高频变压器的一个主要应用领域,用于各种开关电源设备中,提供能量转换和电气隔离。 - ...

    PZ-ERL39系列高频变压器.pdf

    1. 耦合位置优良:ERL39系列高频变压器的设计中,耦合位置被优化,从而确保了良好的磁耦合效率,进而提高了变压器的性能。 2. 中柱圆形设计:该系列变压器的中柱设计为圆形,这样的设计可以为绕组提供更多的空间,...

    erl,rabbit 安装包

    标题中的“erl”指的是Erlang编程语言,它是一种并发和分布式系统设计的语言,尤其在高可用性和容错性方面表现出色。Erlang是RabbitMQ的基础,因为RabbitMQ是一个用Erlang编写的开源消息代理和队列服务器。 ...

    erl&mq.zip

    【标题】"erl&mq.zip" 涉及到两个关键组件:Erlang OTP和RabbitMQ,它们在IT行业中是构建高可用、分布式系统的重要工具。 【Erlang OTP】 Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson...

Global site tag (gtag.js) - Google Analytics