在bash风格的shell中使用管道

时间:2011-05-05 22:02:57

标签: c shell unix communication pipe

  

可能重复:
  Implementing Pipes in a C shell (Unix)

嗨,

我正在编写一个minishell来了解Bash是如何工作的,我希望它能像管道一样使用 例如ls | sort(使用><>>&的所有命令都可以正常工作)

这是结构:

main() {
display loop {
   -> function that use strtok to split command line and store commands
   -> fork
parent process : make a wait()
child process has the execution loop with execv.
}

我有一些问题需要了解如何实现管道。

我创建类似fd[2]的内容来使用管道:fd[0]来阅读,fd[1]来写。

我知道我在父进程中使用pipe()函数。当我fork()时,子进程继承fd[2]。 在我的minishell中,只有子进程可以执行命令。

我有点困惑,因为我不知道是否必须使用fork()两次?以及谁(父或子)执行命令,我想只保留一个执行循环(就像我之前解释的那样)。你认为使用读写是个好主意吗?

ls | sort:必须在管道中写入输出ls,然后进程必须读取管道,这将成为sort命令的输入,我是对的吗?

谢谢: - )

编辑:我只使用一个执行官,我不知道是否可能?

0 个答案:

没有答案