【发布时间】:2011-02-09 05:11:57
【问题描述】:
我正在尝试实现一个支持管道的 linux shell。我已经完成了简单的命令、后台运行的命令、重定向,但仍然缺少管道。
我已经阅读过它并看到了一些 sn-ps 代码,但仍然无法找出可行的解决方案。
到目前为止我所拥有的:
int fd[2];
pipe(fd);
pid_t pid = fork();
if (pid == -1)
return -1;
if (pid == 0)
{
close(fd[1]); //close write to pipe, in child
execlp("cat", "cat", "names.txt", NULL);
}
else
{
close(fd[0]); //close read from pipe, in parent
execlp("sort", "sort", NULL);
}
我是一个新手程序员,你可能会说,当我在编写一些我不太了解的东西时,显然是这样,我喜欢从非常简单和具体的东西开始,然后从那里开始构建.
因此,在能够在管道中实现三个或更多不同的命令之前,我希望能够计算“ls names.txt | sort”或类似的东西,其中 names.txt 是一个按字母顺序排列的名称文件.
更新了代码,但还是不行。
谢谢。
【问题讨论】: