操作系统- MINIX剥离的shell示例



我在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)将如何执行?

我刚开始理解操作系统是如何工作的。

谢谢!

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

相关内容

  • 没有找到相关文章

最新更新