解析器文件
基本概念:
解释器是文本文件,其起始行的形式是:
#! pathname [optional-argument]
在惊叹号和pathname之间的空格是可任选的。最常见的是以下列行开始:
#! /bin/sh
pathname通常是个绝对路径名,对它不进行什么特殊的处理,对这种文件的识别是由内核作为exec系统调用处理的一部分来完成的。内核使调用exec函数的进程实际执行的并不是该解析器文件,而是在该解释器文件第一行中pathname所指定的文件。一定要将解析器文件(文件文件,它以#!开头)和解析器(由该解析器文件第一行中的pathname指定)区分开来。
一个简单的解析器文件:printf.sh
#! /bin/sh
echo "hello world"
a) 这个解析器文件的解析器就是第一行中的/bin/sh
b) 通过exec来执行printf.sh时,类似执行了/bin/sh printf.sh
c) 如果缺少第一行,通过exec来执行时,会报错(execl error: Exec format error)
调用exec的例子可参考文章: fork编程之exec函数详解
End;
还没有评论,来说两句吧...