本周学习了第七章,进程管理.
经过上周,发现自己的学习方法真的有些问题,之前把概念抄了一大堆,结果后来编写ls时就发现基本没有太多卵用.
本周我没有抄太多概念,而是通过看书百度以及请教小伙伴对书本内容设身处地到计算机上做尽量深的了解,编写my_shell时根据书本范例前的关键函数及思路方面的说明尽量自己编写,主要实现方式就是从得到字符串,以空格又分开存入二维数组,然后从"./" "/bin" "/usr/bin" 寻找解析出的命令,再调用execvp()函数在创建的子进程上执行命令.
关于输出重定向,解析命令时将符号前存入待执行命令,符号后存入待打开文件,主要是调用dup2()函数将执行命令的结果标准输出方向从显示屏挪到文件中.
关于输入重定向,与输出相似,然后将标准输入由键盘改为从文件提取信息执行命令.
管道符 | 左右都是命令,需要两个二维数组来存储命令,并创建两次子进程. 具体执行相当于上述两个的结合,通过一个中间文件将前一个命令的结果标准输出作为后一个命令的标准输入
出现后台运行符,以background标注.然后去掉后台运行符,将其当做其他命令来执行,但在尾部使其不等待子进程结束父进程直接返回即可实现后台运行.
cd 功能则是在解析命令后判断是否第一个字符串为cd ,是的话调用chdir()函数切换目录
之前看书时感觉只是很散很空,但是通过my_shell的编写只是有了总结和更深的了解.