对管道感到困惑:(制作“3 个命令管道”。)

对管道感到困惑:(制作“3 个命令管道”。)

所以我必须制作一个包含 3 个命令的管道:

  1. 一个程序写成C在无限循环中打印文本 - 编译后称为a.out
  2. 它可以是任何东西,例如xcalc
  3. 如上所述,例如xclock

所以我的问题是如何用这三件事制作一个管道,然后使用命令lsof获取有关打开的管道的任何信息?
我尝试过这样的事情:

mknod pipe1 p ./a.out | xclock | xcalc

但它不能正常工作。
我必须使用哪个参数lsof才能获得我想要的信息? (在索拉里斯这是pfiles -F)。

答案1

就像管道一样,物理管道必须有两个开口端(例如水流过的一侧),以及水流过的一侧出去), 在*尼克斯管道需要从 接收输入的程序/dev/stdin(即标准输入),并将输出发送到/dev/stdout,(即标准输出),或者(更常见的是)两者都做。旨在执行这些操作的程序的行为类似于插头或者管道中的塞子,阻止(数据)流动。

OP 中使用的所有三个程序(mknodxclockxcalc),请勿使用标准输入或者标准输出足够重要,因此是*尼克斯相当于插头。将它们用管道连接在一起并不比用两段 PVC 管连接三个爱达荷州土豆更有用。

相关内容