【发布时间】:2011-11-26 13:01:03
【问题描述】:
我正在尝试实现一个支持多管道的简单 shell 程序。现在我的 shell 可以实现一些简单的内置命令和外部命令。我通过从以空格" " 分隔的命令行获取用户输入并将每个字符串放在char* argv[] 中来做到这一点。现在的问题是执行管道。我在这个链接http://www.cs.loyola.edu/~jglenn/702/S2005/Examples/dup2.html 中读到了一些关于它的内容。我明白它是如何工作的。
所以我想到了strcmp 每个argv[i] 和"|",当我遇到管道时,我fork 一个新进程。然后我将管道前的琴弦放入char* argv[],将管道后的琴弦放入另一个char* argv[]。这可能适用于 1 个管道,但如果用户输入多个有多个管道,则使用此方法可能会变得乏味。我的主要问题是分离管道两端的琴弦。关于如何实施它的任何想法?谢谢。
【问题讨论】: