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

来源:互联网 发布:linux c语言遍历目录 编辑:程序博客网 时间:2024/06/05 08:25

        鉴于世风不古,在讲正题前,先假设个场景:小明在马路边捡到一分钱,不知道怎么办,就打电话给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/echoargarg[1]: /home/wwe/code/interpreter/interp1arg[2]: myarg1arg[3]: myarg2

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

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

 

 结果:

[root@localhost interpreter]# ./a.out arg[0]: /home/wwe/code/interpreter/echoargarg[1]: "I come from interp1 file"arg[2]: /home/wwe/code/interpreter/interp1arg[3]: myarg1arg[4]: myarg2   
原创粉丝点击