我找到了如何在SO上区分两个管道的答案,语法如下所示。
diff <(./a.out) <(./a.out | sort -n)
但是,它会创建a.out
的两个进程,由ps
验证。是否可以只有一个a.out
,将输出广播到两个流中,并在这两个流上进行差异化?
./a.out | tee >(cat) >(sort -n)
我可以使用tee
进行广播,但不知道如何使用diff
。
有什么建议吗?
编辑:为什么我不想创建两个进程?原因是这是一个并发程序,因此输出是非确定性的。因此,我必须从一个进程使用相同的输出。
答案 0 :(得分:1)
不确定您对2个进程有什么异议,但也许您可以使用这样的fifo:
mkfifo fifo
diff <(./a.out | tee fifo) <(sort < fifo)
答案 1 :(得分:0)
如果您可以使用文件
,有一种简单的方法说, ./a.out>文件1
cat file1 | sort -n&gt; file2的
diff file1 file2
(如果所有空间都是约束或删除不需要的文件) rm file1 file2
到此结束时,你只有一个a.out在运行,你也得到了差异