2014-03-26 42 views
0

我在Tannenbaum的MINIX書中遇到了剝離下來的shell程序。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()的創建一個新的子進程? (&狀態)將如何執行?

我對了解操作系統的工作原理/構建方式很陌生。

謝謝!

回答

1

fork創建新進程立即,所以過程看fork回報,但與不同的返回值。在父級中,返回值是子級的非零進程ID,因此父級執行wait。在孩子中,fork返回0,所以孩子執行execve