unix学习笔记---解释器文件(interpreter file)

        鉴于世风不古,在讲正题前,先假设个场景:小明在马路边捡到一分钱,不知道怎么办,就打电话给114114把电话转接给了警察局,把小明的情况告诉了警察叔叔,由警察叔叔来处理。

       进入正题:解释器文件就是114,而警察局警察叔叔就是指定的解释器。这样做的好处就是可以在解释器文件里指定解释器,来对相应的场景情况进行相应的处理,比如若我是114,我可以选择把小明的钱直接密下。(这追求。。。)。

      除了系统中在bin目录下设定好的解释器,可以自己编写解释器,其实就是程序。具体实例和步骤如下:

     本例所有程序在自定义的工作目录 /home/wwe/code/interpreter下完成。

     1.编写自己的解释器:

     1.1  文件名为echoarg.c  

    #include <stdio.h>

    //function: print out all the args

    int 
    main(int argc,char *argv[])
   {
     int i;
     for(i = 0; i < argc;i++)
     printf("arg[%d]: %s\n",i,argv[i]);
     return 0;
   }


    1.2  编译:   

    1.3  将生成的a.out更名为 echoarg,得到了自己定义的解释器。

 2.创建解释器文件--interp

    2.1 新建文本文档,命名为interp

    2.2 在文件中写入解释器所在的位置 

     #! /home/wwe/code/interpreter/echoarg

  2.3 查看、更改权限: 
  [root@localhost interpreter]# ll 
   -rw------- 1 root root   37 Aug 23 00:54 interp 

      可见没有执行权限,更改。

 [root@localhost interpreter]# chmod 777 interp1
 
     -rwxrwxrwx 1 root root   38 Aug 23 00:27 interp 

3.测试:新建文件interpreter.c  

 

#include <unistd.h>
#include <stdio.h>

int main()
{
  pid_t pid;
  int status;
  status = execl("/home/wwe/code/interpreter/interp1","interp1","myarg1","myarg2",(char*)0); 
  if(status < 0)
  printf("execl_err: %d\n",status);
  return 1;

}

 结果:

[root@localhost interpreter]# ./a.out 
arg[0]: /home/wwe/code/interpreter/echoarg
arg[1]: /home/wwe/code/interpreter/interp1
arg[2]: myarg1
arg[3]: myarg2

  在解释器文件中加入可选参数:

#! /home/wwe/code/interpreter/echoarg  "I come from interp1 file"

 

 结果:

[root@localhost interpreter]# ./a.out 
arg[0]: /home/wwe/code/interpreter/echoarg
arg[1]: "I come from interp1 file"
arg[2]: /home/wwe/code/interpreter/interp1
arg[3]: myarg1
arg[4]: myarg2
   
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值