首页 > 解决方案 > 命名管道中的串行传输

问题描述

我想将数据顺序传输到命名管道(FIFO)。为此,我在后台调用顺序命令:

(echo "text1" > pipe &); (echo "text2" > pipe &); (echo "text3" > pipe &);

在同一过程中,我调用以下命令:

cat pipe

我希望得到以下输出:

text1
text2
text3

但我在输出中得到随机顺序:

text2
text1
text3

是否有可能在输出端获得与输入端相同的顺序?

标签: linuxbashshellunix

解决方案


后台并行进程的顺序不是确定性的,因为它们都是独立调度的。

如果您希望三个后台作业按顺序运行,请在后台尝试:

{ task1; task2; task3; } &

注意不要省略任何空格或分号。


推荐阅读