在RAM中创建临时文件,并在Gnuplot中使用它

C++, Gnuplot: Create temporary file in RAM and use it in Gnuplot

本文关键字:Gnuplot 并在 RAM 创建 临时文件      更新时间:2023-10-16

我是一个c++初学者。假设我有一个c++程序输出一个函数,例如f(x)=x*x,我需要对它求值并打印出来。这可以很容易地在代码中完成。

是否可以在RAM中创建一个带有评估结果的临时文件?例如,它很可能是一个std::vector,因此它将驻留在堆中(不是吗?)。

然后,是否可以使用system()(或代码中的任何内容)从内存中的文件调用gnuplot ?

并且,作为最后的突发奇想,这两个可以在没有外部虚拟RAM磁盘的情况下完成吗?

因此,在Linux中,使用管道,您可以执行以下操作作为第一个示例:

cat data.txt | gnuplot -p -e "plot '-' w l"

,其中data.txt是一个两列文件。您可以让您的程序生成一些数据,而不是该文件,您可以为gnuplot添加一个额外的设置,使其更复杂:

./program | gnuplot -p -e "set ylabel 'E'; plot '-' w l"

现在这就是你所需要的。注意,-p = persistent、-e = interactive(?)以及命令之间的分号(;)是必需的。类似的东西可能也适用于windows。我希望这对你有帮助。

额外的东西:如果你有很多设置,你可以把它们放在一个文件中,例如:

$ cat settings.txt
set logs;
set ylabel "hejsan";
set xlabel "energy";
plot '-' w l

然后:

./program | gnuplot -p -e "$(<settings.txt)"

不要错过"$(<filename)"中的任何符号!不过,这可能只适用于Linux中的Bash shell。您可以尝试cygwin环境。或者直接安装ubuntu。

一周后编辑

如果你想这样做来保存你的SSD,它当然不会伤害,但可能不重要。SSD具有智能管理,因此它不会每次都写入相同的物理段。文件会"四处移动",它们被设计成可以持续数百tb的循环。