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"。

posted @ 2012-08-10 17:46  o0慢节奏0o  阅读(164)  评论(0编辑  收藏  举报