Unix 是管道'|';在普通的管道里?

Unix 是管道'|';在普通的管道里?,unix,operating-system,pipe,Unix,Operating System,Pipe,在操作系统概念(Avi Silberschatz,第9版)的第145页上,它指出 请注意,普通管道要求UNIX和Windows系统上的通信进程之间具有父子关系。这 这意味着这些管道只能用于之间的通信 同一台机器上的进程 但是,当我在linux机器上执行命令ps-el | grep 0时,ps和grep进程都将bash作为其父进程。其他参考资料证实,壳管是单向的普通管道。如果需要父子关系,那么ps和grep进程在bash下为什么是兄弟?为了证实我对管道的理解,教科书中的语句是错误的还是我在这里误解

在操作系统概念(Avi Silberschatz,第9版)的第145页上,它指出

请注意,普通管道要求UNIX和Windows系统上的通信进程之间具有父子关系。这 这意味着这些管道只能用于之间的通信 同一台机器上的进程


但是,当我在linux机器上执行命令ps-el | grep 0时,ps和grep进程都将bash作为其父进程。其他参考资料证实,壳管是单向的普通管道。如果需要父子关系,那么ps和grep进程在bash下为什么是兄弟?为了证实我对管道的理解,教科书中的语句是错误的还是我在这里误解了什么?

该语句是正确的,但必须结合描述符继承来解释。这意味着,要设置管道,您需要父子关系,而不是仅在父子之间才能与管道通信。因此,在您的例子中,bash创建管道并将其传输给子级ps和grep(一个在其中写入,另一个读取)。所以,两个孩子都和他们的父母创建的管道通信。

对不起,但投票关闭:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。换句话说,StackOverflow是帮助人们修复他们的编程代码。请先阅读,,,然后再发布更多的Qs.TnxThanks回复!我想我们可以创建一个“普通管道”“如果我们可以在两个独立进程之间共享管道描述符,那么这将是重新创建命名管道。