我的问题关于在linux管道()函数:http://linux.die.net/man/2/pipe管()函数在linux
我的问题是: “有没有只有一个Linux的管道?”。我的意思是,如果我有多个写入管道的进程,它是否是同一个管道,这意味着一旦从管道读取数据,我可能会在同一个read()操作中从不同进程获取数据?
我的问题关于在linux管道()函数:http://linux.die.net/man/2/pipe管()函数在linux
我的问题是: “有没有只有一个Linux的管道?”。我的意思是,如果我有多个写入管道的进程,它是否是同一个管道,这意味着一旦从管道读取数据,我可能会在同一个read()操作中从不同进程获取数据?
阅读不仅pipe(2),也pipe(7),最重要的Advanced Linux Programming
我的意思是,如果我有一个写信给管
一般多个进程,你不应该做到这一点.. 。
它是一样的管道,这意味着一旦我从管道读取数据,我可能会从不同的过程中获取数据es在相同的read()操作中?
是的,但你通常不这样做。
编号pipe()
函数创建一个两端的新管道。
会发生什么情况是文件描述符可以重复。 dup
,dup2
功能可以做到这一点。 fork
也是。
如果你以某种方式拥有两个带有重复管道文件描述符的程序,那么是的,它们都会出现在管道的输出中。
这与显示前台和后台运行程序的输出的终端窗口是一样的。
所以你说的是在fork()中创建的子进程继承了管道的文件描述符,所以它实际上是完全相同的数据? – CrazySynthax
@CrazySynthax:就像当程序从命令行启动一个新程序时,程序如何从shell中继承终端的文件描述符。是。 –
这是一个很混乱的问题。为什么不把你认为这个的东西放在首位呢?你有一个程序向你展示来自不同进程的数据吗? –