在c中实现子shell

时间:2012-09-01 19:56:34

标签: c shell unix posix

我用c语言实现了一个类似shell的bash。我支持< > >> ; |&。我的下一个任务是添加对()的支持,基本上是子shell。我们如何实现子shell。我可以fork并将父进行等待,传递环境变量但我需要添加对(ls | sort) ; ls等命令的支持(我承认这个命令没有多大意义,但它解释了动机)

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

为了实现这一点,我们解析命令行并使树状结构。这可以在lexyacc的帮助下完成,而barmer建议我们可以将每个节点命名为subshell pipeline semicolon。解析整个命令行后,将指向整个节点的指针传递给主程序。运行子shell fork,然后使用execve通过当前环境重新加载相同的程序。