Answers:
那句话不是很清楚。首先,父级应该是祖先,因为建立管道的过程可以是父级,也可以是祖父母,也可以是祖父母或祖父母或祖父母,或者是其中一个通信过程。其次,该句子的意思不是“如果要管道,则必须存在一个共同的祖先过程”,而是“如果要管道,则必须建立一个共同的祖先过程”。
在引擎盖下,一个过程与其自身建立了一条管道。管道是一个文件描述符,与其他任何文件描述符一样,或更确切地说,是一对文件描述符,每个端点一个。创建管道的进程可以立即使用它向自身发送数据,尽管这很少有用(尽管自管道确实有其用途)。
一个典型的成语是让进程建立一个管道,然后派生一个子进程,并在父管道中关闭管道的一端,在子管道中关闭管道的另一端。这使父进程和子进程在一个方向上进行通信。如果进程需要双向通信,则它们需要两个管道(在某些unix变量中,管道是双向的除外)。
管道又被任何子代继承,因此创建管道的过程可能不会参与通信。例如,在两个外部命令(例如)之间创建的外壳中的管道ls | rot13
涉及以下步骤:
execve
上ls
。execve
上rot13
。