如何直接将Gnuplot输出定向到文件描述符(例如管道)?

时间:2016-11-15 09:26:51

标签: pipe output gnuplot

使用Gnuplot可以将输出传输到另一个进程,例如:

set output "| cat >&2"

此行将绘图输出重定向到文件描述符" 2"。

但是,在这种情况下,所有输出数据都会通过cat。如何将输出直接发送到我选择的文件描述符?

2 个答案:

答案 0 :(得分:2)

您可以从gnuplot脚本中完全删除set output。然后输出将写入stdout,然后您可以重定向:

gnuplot -e "set terminal pngcairo; plot sin(x)" >&2

答案 1 :(得分:1)

要避免使用cat,可以使用

set output '/dev/fd/2'

这要求匿名管道之前已打开。由于2stderr,因此通常是这种情况。 对于/dev/fd/1也是一样,它是stdout,并且似乎是默认值,即set output '/dev/fd/1'set output相同。

但是对于/dev/fd/3,需要先设置管道。例如。在命令行上需要3>tmp.ps

gnuplot -e "set terminal post; set out '/dev/fd/3'; plot sin(x)" 3>tmp.ps

否则,将导致line 0: cannot open file; output not changed system error: No such file or directory。当然set out 'tmp.ps'会更简单。