刚看了apue的关于解析器文件的部分,感受颇多,记录一下吧。
解析器文件是一种文本文件,文件的第一行的形式:#! pathname [optional-argument];
其中pathname指的时解析器名称,optional-argument是传递给解析器的参数。其实我们大家最熟悉的解析器文件就是shell脚本文件,shell脚本文件第一行都是#! /bin/sh。
解析器文件是一种文本文件,而解析器是可执行的二进制文件。解析器是由解析器文件的第一行指定的。
例如一个displayArgTab程序,用于显示执行该程序时的参数表,代码如下:
//name:displayArgTab
int main(int argc, char *argv[])
{
int i;
for(i = 0; i<argc ;i++)
printf("argv[%d]: %s\n", i, argv[i]);
return 0;
}
以displayArgTab为解析器,写一个解析器文件,如下:
//解析器文件名为testInterpreter
#! /tmp/displayArgTab arg
生成的解析器文件testInterpreter也放在/tmp/下。下面通过execl来调用解