【发布时间】:2016-02-23 19:55:27
【问题描述】:
对于一个任务,我应该实现 linux 终端。我的终端应该支持带有管道的参数。就像用户可以输入:
ls | grep ".cpp"
到目前为止我所做的是:
pid = fork();
if(pid==0)
{
close(fd[0]);
dup2(fd[1],1);
close(fd[1]);
execlp("/bin/ls","ls");
}
wait(NULL);
pid=fork();
if(pid==0)
{
close(fd[1]);
dup2(fd[0],0);
close(fd[0]);
execlp("/bin/grep","grep",".cpp");
}
我的第一个孩子工作完美,将 ls 的输出写入之前声明的管道,但是,我的第二个孩子运行 grep,但显然无法从管道获取输入。为什么呢? 当我运行它时,我的输出是 /root/OS $ ls | grep
就这样卡住了
【问题讨论】: