单个管道是否可以被多个进程连接和读取

标签 c linux operating-system kernel

根据我的理解,C 管道就像一种特殊的文件,在内部,内核在表中跟踪每个进程的打开和关闭。 see the post here

从这个意义上说:

  1. 是否可以将 1 个管道连接到多个进程?
  2. 如果可能的话,多个进程是否可以读取相同的数据?
  3. 如果 2 是可能的,他们会读取相同的数据,还是读取数据“清空”数据?

例如:进程1写入pipe,进程2,3,4能否读取进程1写入的数据?

最佳答案

是的,多个进程可以读取(或写入)一个管道。

但是 进程的数据不会重复。一旦一个进程从管道中读取了数据,它就会丢失并且仅供实际读取它的进程使用。

相反,如果您有多个进程写入单个管道,则无法区分数据或数据来自哪个进程。

关于单个管道是否可以被多个进程连接和读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69325220/

相关文章:

c - Gstreamer RTSP 客户端超时问题

linux - 带有 CAM8200-U 的两个 RIoT 板之间通过 UDP 的 Gstreamer

matlab - 如何从命令行向 Erlang 进程发送消息?

c - 构建一个相当于 memcpy 的函数

c - 在哪里可以找到丢失的 "C"包含文件。 (*。H)

c++ - 在 c/c++ 中更改 Windows 服务的状态

arrays - Bash,递归中使用相同的变量

linux - unix dircmp 失败并出现以下错误 : sort: 0653-657 A write error occurred while merging

c - Linux中为CFS定义的函数在哪里

dynamic - 动态加载和动态链接的区别?