操作系统精简版shell代码分析
#define TRUE 1
while(TRUE){
type_prompt();
read_command(command,parameters);
if(fork()!=0){
// parent code
waitpid(-1,&status,0);
}else{
// child code
execve(command,parameters,0);
}
}
- fork是一个系统调用,用于创建子进程,它是对原进程进行复制
- 通过判断fork调用的返回值,来区分父进程的代码,还是子进程的代码
- execve也是一个系统调用,它的本意是用第一个参数对应的文件来替换该进程(也就是子进程)的core image,在这里直接理解为指向要执行的二进制文件