我认为实际的问题是你提前删除了临时文件。我会将代码重组为:
if (gnuplotPipe)
{
// Create the temp file
tempDataFile = fopen(tempDataFileName,"w");
for (i=0; i <= dataSize; i++)
{
x = xData[i];
y = yData[i];
fprintf(tempDataFile,"%lf %lf\n",x,y);
}
fclose(tempDataFile);
// Send it to gnuplot
fprintf(gnuplotPipe,"plot \"%s\" with lines\n",tempDataFileName);
fflush(gnuplotPipe);
fprintf(gnuplotPipe,"exit \n");
pclose(gnuplotPipe);
// Clean up the temp file
remove(tempDataFileName);
}
这样,系统上就不会有很多临时文件。
另一个好的方法是使gnuplot持久化,这样您就可以在管道关闭后看到绘图,只需添加一个
-p
打开管道时标记
gnuplotPipe = popen("gnuplot -p","w");