命令行工具一次监听几个fifo



我正在寻找一种工具来一次读取几个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按顺序读取每个参数,而不是同时读取。在这种情况下使用什么工具是正确的?

tail会这样做。

使用:

tail -q -n +1 a b

编辑:对不起,这不起作用。我看看能不能找到别的。

对不起,我找不到任何东西。

如果你不想自己编程,那么我的建议是多个命令:

#!/bin/sh
rm c
cat a >> c &
cat b >> c &
wait

你可能会得到一些交错,但其他一切都应该工作良好。等待是为了防止程序退出,直到所有的cat程序都完成(以防在完成所有操作后需要运行一些命令)。rm是为了确保c开始为空,因为cat命令附加到文件中。

相关内容

  • 没有找到相关文章

最新更新