![对管道感到困惑:(制作“3 个命令管道”。)](https://linux22.com/image/99101/%E5%AF%B9%E7%AE%A1%E9%81%93%E6%84%9F%E5%88%B0%E5%9B%B0%E6%83%91%EF%BC%9A%EF%BC%88%E5%88%B6%E4%BD%9C%E2%80%9C3%20%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%AE%A1%E9%81%93%E2%80%9D%E3%80%82%EF%BC%89.png)
所以我必须制作一个包含 3 个命令的管道:
- 一个程序写成C在无限循环中打印文本 - 编译后称为
a.out
- 它可以是任何东西,例如
xcalc
- 如上所述,例如
xclock
所以我的问题是如何用这三件事制作一个管道,然后使用命令lsof
获取有关打开的管道的任何信息?
我尝试过这样的事情:
mknod pipe1 p ./a.out | xclock | xcalc
但它不能正常工作。
我必须使用哪个参数lsof
才能获得我想要的信息? (在索拉里斯这是pfiles -F
)。
答案1
就像管道一样,物理管道必须有两个开口端(例如水流过的一侧)在,以及水流过的一侧出去), 在*尼克斯管道需要从 接收输入的程序/dev/stdin
(即标准输入),并将输出发送到/dev/stdout
,(即标准输出),或者(更常见的是)两者都做。旨在执行这些操作的程序的行为类似于插头或者管道中的塞子,阻止(数据)流动。
OP 中使用的所有三个程序(mknod
、xclock
和xcalc
),请勿使用标准输入或者标准输出足够重要,因此是*尼克斯相当于插头。将它们用管道连接在一起并不比用两段 PVC 管连接三个爱达荷州土豆更有用。