linux

时间:2016-04-15 16:11:34

标签: linux pipe

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

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

2 个答案:

答案 0 :(得分:5)

没有。 pipe()函数创建一个具有两端的新管道。

可能发生的是文件描述符可以重复。 dupdup2函数可以执行此操作。 fork也做到了。

如果你有两个带有重复管道文件描述符的程序,那么是的,它们都会显示在管道的输出中。

与终端窗口相同,显示在前台和后台运行的程序的输出。

答案 1 :(得分:1)

不仅读取pipe(2),还读取pipe(7),最重要的是Advanced Linux Programming

  

我的意思是,如果我有多个写入管道的进程

一般来说,你不应该这样做......

  

是否是同一个管道,这意味着一旦我从管道读取数据,我可能会在同一个read()操作中从不同进程获取数据?

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