我正在寻找一种工具来一次读取多个 FIFO(可能使用select(2)
)并输出读取的内容,并在所有 FIFO 关闭时关闭流。更准确地说,它的program
行为如下:
$ mkfifo a b
$ program a b > c &
$ echo 'A' > a
$ echo 'B' > b
[1] + done program a b > c
$ cat c
A
B
$ program a b > c &
$ echo 'B' > b
$ echo 'A' > a
[1] + done program a b > c
$ cat c
B
A
我的第一次尝试是使用cat
,但第二个示例不起作用(echo 'B' > b
将挂起),因为cat
按顺序读取每个参数,而不是同时读取。在这种情况下使用的正确工具是什么?