Unix解释程序文件
Unix中解释程序文件第一行格式为
#! pahtname [ optional-argument]
pathname为解释程序的绝对路径,optional-arugment为解释程序参数。例如,shell脚本第一行大多为
#! /bin/sh
当使用exec函数执行解释程序文件时,内核识别出该文件为解释程序文件,并将文件内容以命令的方式传递给解释程序。例如下面代码:
#include "apue.h" #include <sys/wait.h> int main(void) { pid_t pid; if ((pid = fork()) < 0) { err_sys("fork error"); } else if (pid == 0) { /* child */ if (execl("/home/sar/bin/testinterp","testinterp", "myarg1", "MY ARG2", (char *)0) < 0) err_sys("execl error"); } if (waitpid(pid, NULL, 0) < 0) /* parent */ err_sys("waitpid error"); exit(0); }
终端中结果为:
$ cat /home/sar/bin/testinterp #!/home/sar/bin/echoarg foo $ ./a.out argv[0]: /home/sar/bin/echoarg argv[1]: foo argv[2]: /home/sar/bin/testinterp argv[3]: myarg1 argv[4]: MY ARG2
此处解释程序为“/home/sar/bin/echoarg”,解释程序文件为"/home/sar/bin/testinterp"。