在操作系统概念第145页(Avi Silberschatz,第9版)中,它指出:
注意到普通管道需要在和系统上的通信进程之间建立父子关系。这意味着这些管道只能用于同一台机器上进程之间的通信。
但是,当我在linux机器上执行命令ps -el | grep 0时,进程ps和grep都将bash作为父进程。其他资源确认外壳管道是单向的普通管道。如果需要父子关系,为什么ps和grep进程是属于bash的兄弟姐妹?为了证实我对管道的理解,教科书中的陈述是大错特错,还是我在这里误解了什么?
发布于 2018-02-03 08:50:57
该语句为true,但必须与描述符继承混合解释。它的意思是,要建立一个管道,你需要父子关系,而不是与管道的沟通是可能的,只有在父母和孩子之间。因此,在您的示例中,bash创建了管道,并将其传输到子程序ps和grep (一个在其中写,另一个读)。因此,两个孩子都与父母创建的管道进行通信。
https://stackoverflow.com/questions/48591857
复制相似问题