使用Gnuplot可以将输出传输到另一个进程,例如:
set output "| cat >&2"
此行将绘图输出重定向到文件描述符" 2"。
但是,在这种情况下,所有输出数据都会通过cat
。如何将输出直接发送到我选择的文件描述符?
答案 0 :(得分:2)
您可以从gnuplot脚本中完全删除set output
。然后输出将写入stdout
,然后您可以重定向:
gnuplot -e "set terminal pngcairo; plot sin(x)" >&2
答案 1 :(得分:1)
要避免使用cat
,可以使用
set output '/dev/fd/2'
这要求匿名管道之前已打开。由于2
是stderr
,因此通常是这种情况。
对于/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'
会更简单。