在管道中发送EOF而不关闭它

  • 本文关键字:EOF 管道 pipe gnuplot eof
  • 更新时间 :
  • 英文 :


我正在编写一个使用GnuPlot绘制数据的应用程序。我决定使用"二进制"格式,而不是使用文本格式通过管道通信两个程序(由于vprintf()和传递的大量数据,速度很慢)。

问题是,在二进制格式中,GnuPlot期望EOF(Ctrl+D)结束传输并绘制数据。这在UNIX控制台模式下很容易。只需按Ctrl+D即可结束数据输入,绘制数据并保持控制台打开状态,等待更多命令。

但在我的C++应用程序中,发送EOF的唯一方法是关闭管道。这会导致gnuplot进程终止,并且不会在屏幕上显示该图。

有什么技巧可以把EOF发送到管道吗??UNIX终端如何在不关闭与运行进程的管道的情况下发送EOF?

PD:我不能用"-persistent"关闭并重新打开GnuPlot,因为这会生成一个新的绘图,而不是更新旧的绘图(它是一个实时系统,所以它会生成近inf绘图窗口)。

我认为你想做的不会奏效。参见示例:

http://www.velocityreviews.com/forums/t365339-write-eof-without-closing.html

我们能自己写一个EOF角色吗?

基本上EOF本身没有字符。它是文件的末尾。

因此,正如我在上面的评论中所指出的,我建议您尝试使用一个将您直接连接到gnuplot的库。然后你应该能够控制它,从而实现你想要的行为(很可能使用replot之类的东西)。

最新更新