两个命名的 PIPE (PIPE_in/PIPE_out) 通过 `tail -f` 连接起来 |发送到 PIPE_in 的字符串未到达 PIPE_out

两个命名的 PIPE (PIPE_in/PIPE_out) 通过 `tail -f` 连接起来 |发送到 PIPE_in 的字符串未到达 PIPE_out

1.创建命名 PIPE,pipe_inpipe_out运行:

$ mkfifo pipe_in
$ mkfifo pipe_out

2.连接pipe_inpipe_out

TERM0: $ tail -f pipe_in > pipe_out

3.发送字符串hello world!pipe_in并期望它到达pipe_out

TERM1: $ tail -f pipe_out
TERM2: $ echo "hello world!" > pipe_in

pipe_out如果我在 中终止命令,我只能看到到达的字符串2.。这似乎是一个缓冲问题,所以我决定运行上面的所有命令,stdbuf -i0 -e0 -o0 <command>但它不起作用。

答案1

tail只输出文件/流的最后 n 行。当您仍在生成行时,它无法知道哪一个是最后 n 个。

你尝试过类似的事情cat吗?

答案2

请参阅 @ctrl-alt-delor 的回答以了解它不起作用的原因。但您仍然可以通过以下方式达到相同的目的cat

在此输入图像描述

相关内容