博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APUE第八章学习札记之自建简单解释器以及参数分析
阅读量:6440 次
发布时间:2019-06-23

本文共 845 字,大约阅读时间需要 2 分钟。

hot3.png

用过Unix/Linux的童鞋都不会对#!/bin/sh感到陌生。我们都知道sh是shell的解释器的意思。但是对于解释器这东西就感到很神秘。其实解释器就是一个可执行的文件而已,我们也能够自己建造一个简单的解释器。

1)建立echoarg.c。

#include "apue.h"

int
main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++) /* echo all command-line args */
printf("argv[%d]: %s\n", i, argv[i]);
exit(0);
}

2)编译echoarg.c为echoarg。

3)建立callEchoarg.e文件。

这个文件的第一行说明使用/home/Daniel/apue.2e/echoarg作为解释器解释本文件的代码。

4)运行出结果。

结果分析:由于对于解释器echoarg来说,其作用就是返回所有的参数。

使用#!标示的文件第一行,其实就是调用exce函数执行可执行文件echoarg和其参数,然后就是exce的参数。由于在上图中是直接运行./callEchoarg.e,所以只有excel("./callEchoarg.e",null)(此处表达只用于理解,看官莫较真,如果有读者知道确切的运行方式请指正,不胜感激!)。

由于调用了可执行文件/home/Daniel/apue.2e/echoarg,这相当于直接执行/home/Daniel/apue.2e/echoarg,所以/home/Daniel/apue.2e/echoarg是第一个参数,而其后紧跟的foo是第二个参数。这时才轮到./callEchoarg.e文件作为参数(此处不甚理解,待补充)。

以上就是自建简单解释器的过程以及运行时参数情况的说明。欢迎指正。

转载于:https://my.oschina.net/DanielLee/blog/179675

你可能感兴趣的文章
每天一个Linux命令之ps-查看系统进程信息
查看>>
图解JavaScript原型链继承
查看>>
用VIPER构建iOS应用
查看>>
Java开源诊断工具 Arthas 发布v3.1.0
查看>>
什么是以太坊
查看>>
高效开发者是如何个性化VS Code插件与配置的?
查看>>
Java日志那些事
查看>>
117. Populating Next Right Pointers in Each Node II
查看>>
【笔记】重学前端-winter
查看>>
大数据构建模块:选择体系结构和开源框架
查看>>
62. Unique Paths
查看>>
告诉你微信域名被封的原因和防封方案
查看>>
七个你没用过的炫酷开发工具推荐
查看>>
深度解析利用ES6进行Promise封装总结
查看>>
css的content属性
查看>>
熬过了互联网“寒冬”,接下来的金三银四你该怎么面试进BAT?
查看>>
Java 开源库精选(持续更新)
查看>>
Scrum联盟发布2015年Scrum状况报告
查看>>
在 Ubuntu 16.04 LTS 上安装 Python 3.6.0
查看>>
CloudCare容器技术白皮书
查看>>