【问题标题】:MINIX stripped down shell exampleMINIX 剥离外壳示例
【发布时间】:2014-03-26 03:54:33
【问题描述】:

我在 Tannenbaum 关于 MINIX 的书中看到了一个精简的 shell 程序。

while(1) {
 read_command(command, parameters);
 if (fork() != 0) 
      wait(&status);    /* parent code */
 }
 else {
      execve(command, parameters, 0);  /* child code */
 }
}

当无限循环执行第一次迭代时,fork()会返回0表示它创建了一个子进程,当它执行第二次时,fork()不会创建一个新的子进程吗? wait(&status) 将如何执行?

我不了解操作系统的工作原理/构建方式。

谢谢!

【问题讨论】:

    标签: shell operating-system minix


    【解决方案1】:

    fork立即创建一个新进程,因此两个进程看到fork返回,但返回值不同。在父进程中,返回值是子进程的非零进程ID,所以父进程执行wait。在子进程中,fork 返回 0,因此子进程执行 execve

    【讨论】:

      猜你喜欢
      • 2018-01-03
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多