Ale*_*der 23 c unix shell command-line interpreter
我是流程和线程管理的新手.我的Shell应该了解PATH环境变量.它可以设置和修改.它以两种方式运行 - 交互式和批处理模式.Shell能够执行多个作业,如ls; ps; wc file; cal.我也想弄清信号.所以我也应该处理^ K,^ c.
我知道我将不得不使用高管,叉子和管道但是无法上手.
你的主循环是:
fgets(3)用于简单的shell,readline(3)用于花哨的一行)要解析命令,有两种常见的选择.编写递归下降解析器或用于yacc(1)生成一个.使用初始解析器很容易yacc,但是你完全可以调试它并且它真的想要无上下文.我更喜欢递归下降,但世界上其他所有人都喜欢使用yacc.(技术上,bison.)如果外壳真的很简单,就像一个作业外壳,yacc可能有点矫枉过正.
要进行词法分析,您也可以自己动手或使用flex.
您不需要使用任何线程.