c - 在 c 中实现子 shell

标签 c shell unix posix

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

感谢任何帮助。

最佳答案

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

关于c - 在 c 中实现子 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230931/

相关文章:

linux - elinks http认证

c - 指针地址如何具有不同的长度?

c 警告 - 从不兼容的指针类型传递 ‘insert’ 的参数 1

c - 让多个线程同时读取文件的最佳方法是什么?

linux - SSH shell : disown script is not saving results to a file

linux - 如何用 Linux Bash 指令替换文件的特殊字符行?

c - 我似乎无法弄清楚如何使用纯指针表示法正确传递参数

linux - 使用 rename 命令重命名 .bmp 文件

linux - 如何 grep 查找目录中没有一组文件扩展名的所有文件?

linux - 使用 find 和 -exec {},有没有办法计算总数?