章节大纲

  • 请编译并运行以下程序,并描述你的观察结果。该程序可以在 Labsetup 文件夹中找到;可以使用 "gcc myprintenv.c" 编译,生成的二进制文件名为 a.out。运行它并使用 "a.out > file" 将输出保存到文件中。

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    extern char **environ;
    void printenv()
    {
      int i = 0;
      while (environ[i] != NULL) {
         printf("%s\n", environ[i]);
         i++;
      }
    }
    
    void main()
    {
      pid_t childPid;
      switch(childPid = fork()) {
        case 0:  /* 子进程 */
          printenv();          ①
          exit(0);
        default:  /* 父进程 */
          //printenv();        ②
          exit(0);
      }
    }