我们在使用Linux时 ,通过Shell与操作系统交换,那Shell是怎么执行的呢?答案是通过fork进程执行,例如我们在shell中执行
cp file1 file2
实际上shell会通过fork系统调用为我们创建一个进程,在这个进程中执行我们的命令,如下面代码所示。
while(1) {
// 在屏幕上显示提示符
type_prompt();
// 从终端读取用户的输入
read_command(command, parameters);
if (fork() != 0) {
// 执行父代码,等待子进程退出
waitpid(-1, &status, 0);
} else {
// 执行用户的命令
execve(comand, parameters, 0);
}
}