文件名称:Linux下Shell的实现说明
文件大小:105KB
文件格式:DOC
更新时间:2015-06-30 04:07:27
shell c linux
1、 首先利用readline()函数读到用户输入的shell命令,采用一个数组来保存shell命令,数组有固定的大小。 2、 在main()函数中根据字符串中是否存在 "&" 字符判断是否为后台进程。如果是后台命令则判断是否是多条指令,如果不是将分割后的命令传递给pipel()函数,如果是的话分割之后利用while循环将命令传递给pipel()函数。如果不是后台进程,需要用waitpid()函数等待子进程结束后父进程才继续。 3、在pipel()函数中,将shell命令根据 "|" 字符分割成一个个重定向命令,利用fork ()得到子进程,并完成管道的设置,然后对每个重定向命令调用redirect()函数(如果没有 "|",则将整个shell命令调用redirect()函数)。 4、在redirect函数里面,根据有没有”>”,”<”来判断是否需要重定向。如果不需要重定向,就直接对参数列表调用execv(char *, char **)函数执行命令。如果需要重定向,进行相应的处理,再调用execv()函数。