2016-04-15 41 views
1

我的问题关于在linux管道()函数:http://linux.die.net/man/2/pipe管()函数在linux

我的问题是: “有没有只有一个Linux的管道?”。我的意思是,如果我有多个写入管道的进程,它是否是同一个管道,这意味着一旦从管道读取数据,我可能会在同一个read()操作中从不同进程获取数据?

+0

这是一个很混乱的问题。为什么不把你认为这个的东西放在首位呢?你有一个程序向你展示来自不同进程的数据吗? –

回答

1

阅读不仅pipe(2),也pipe(7),最重要的Advanced Linux Programming

我的意思是,如果我有一个写信给管

一般多个进程,你不应该做到这一点.. 。

它是一样的管道,这意味着一旦我从管道读取数据,我可能会从不同的过程中获取数据es在相同的read()操作中?

是的,但你通常不这样做。

5

编号pipe()函数创建一个两端的新管道。

会发生什么情况是文件描述符可以重复。 dup,dup2功能可以做到这一点。 fork也是。

如果你以某种方式拥有两个带有重复管道文件描述符的程序,那么是的,它们都会出现在管道的输出中。

这与显示前台和后台运行程序的输出的终端窗口是一样的。

+0

所以你说的是在fork()中创建的子进程继承了管道的文件描述符,所以它实际上是完全相同的数据? – CrazySynthax

+3

@CrazySynthax:就像当程序从命令行启动一个新程序时,程序如何从shell中继承终端的文件描述符。是。 –