minishell的实现
实现原理
我们在这里手动实现一个小型的shell,可以用来处理我们一般常规的指令如ls
,还可以附加参数-l
,并且还可以进行重定向操作。
实现原理很简单,我们将用户输入的字符串读取到我们的缓冲区中,然后首先遍历一遍整个缓冲区看是否存在重定向符>
或者>>
,并且将重定向符改为\0
并且读取出重定向的文件,随后保存判断结果。之后我们再次遍历一遍进行指令处理,我们利用字符指针数组让每一个指针指向每一个指令,并且将之间的空白符如(空格)
改为\0
。做完以上这一切,创建子进程利用进程替换将其替换为目标指令中的程序让其执行指定功能,如果有重定向符要先打开指定文件并且将标准输入重定向到指定文件中,者必须在子进程中完成,然后等待子进程关闭,父进程阻塞,并且让以上过程不断循环即可。
代码实现
1 | /*minishell实现*/ |