Home > Software engineering >  Keep a variable in memory between program runs
Keep a variable in memory between program runs

Time:05-04

In the c program that i am trying to write i would need to update a 2D array and then plot it (for plotting i have been using gnuplot) for a pretty big number of times. I would like, if possible, to avoid having a huge file in which i would write the matrix for every step of the evolution to plot everything afterwards.

My intention was to do a gnuplot script able to run the program to evolve the matrix once and then print it and then iterate. But to do so i would need to give to the program access to the matrix calculated in the prior step and i cannot figure out an efficient way to do it. Being able to keep the matrix in memory between runs and passing only a pointer from one step to the other seems fast but i do not know if it is possible.

Do you know if it is possible to keep a variable in memory between runs or do you have alternative suggestions?

Thanks.

CodePudding user response:

You should open Gnuplot inside your c program, and communicate with it using a FIFO as in this answer.

After that, you can polt your array for example:

std::stringstream ss;
ss<<"plot '-' nonuniform matrix with image\n";
/*... filling ss with your array*/
ss<<"e\ne\n\n";
fprintf(gp, (std::string(ss)).c_str());
fflush(gp);

CodePudding user response:

You can use a memory-mapped file.

Boost provides for a cross-platform shared-memory file.

Check out the documentation.

  • Related