我在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)将如何执行?
我刚开始了解操作系统是如何工作/构建的。
谢谢!
发布于 2014-03-26 20:09:31
fork会立即创建一个新进程,因此两个进程都会看到fork返回,但返回值不同。在父进程中,返回值是子进程的非零进程ID,因此父进程执行wait。在子进程中,fork返回0,因此该子进程执行execve。
https://stackoverflow.com/questions/22651174
复制相似问题