MINIX剥离了shell的例子

时间:2014-03-26 03:54:34

标签: shell operating-system minix

我在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()不会创建一个新的子进程吗?等待(& status)将如何执行?

我不熟悉操作系统的工作原理。

谢谢!

1 个答案:

答案 0 :(得分:1)

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