Shell如何以编程方式实现管道?

Dag*_*ang 3 linux

我了解I / O重定向在Unix / Linux中的工作方式,并且我知道Shell使用此功能通过特殊类型的文件-匿名管道来管道程序。但是我想知道Shell如何以编程方式实现它的细节吗?我不仅对涉及的系统调用感兴趣,而且对整个图片感兴趣。

例如ls | sort,Shell如何为ls和执行I / O重定向sort?

cni*_*tar 5

整个情况很复杂,最好的理解方法是研究一个小壳。对于有限的图片,这里去。在执行任何操作之前,shell会分析整个命令行,因此它确切地知道如何链接进程。假设它遇到了proc1 | proc2。

就像我说的那样,这是一张有限的图片。在真实的画面中,外壳将它们以菊花链状连接成一个循环,并且还记得在适当的时候关闭管端。