【问题标题】:File/pipe writing of a simple interface program一个简单的接口程序的文件/管道编写
【发布时间】:2012-10-18 03:27:30
【问题描述】:

我最近创建了一个简单的程序,它遍历数值计算,将结果写入 3 个文件,然后将这些文件传递给 Gnuplot。作为一个命令行工具,一切似乎都可以工作,但是我已经将所有相同的代码移到了一个在 Xcode 上具有简单界面的程序中,并且我没有得到任何图形输出。我在调试器中逐步执行程序,一切似乎都在工作(到 gnuplot 的管道、文件、所有对象似乎都已创建,并且一切都按预期的顺序发生),但没有可见的输出。下面的代码应该还能用吗?

FILE *SomeFile=fopen("SomeFile.txt", "w");
fprintf(SomeFile, "%g\t", SomeNumber);
FILE *pipe=popen("gnuplot", "w");

fprintf(pipe, "plot \"%s\"\n", [filename UTF8String])

其中 NSString 文件名中的文件名是 SomeFile.txt 。

这在命令行程序中运行良好,知道我现在哪里出错了吗?

【问题讨论】:

  • 如果添加fprintf(pipe,"set term post;set output 'foo.ps'\n"); 会发生什么?你有情节foo.ps吗?要研究的另一件事是刷新 SomeFile (fflush(SomeFile);)。如果您的输出被缓冲,那么在 gnuplot 尝试读取它时文件中可能没有数据。
  • 您在刷新文件/管道方面是 100% 正确的,谢谢!感谢您的帮助 - 如果可以的话,我会支持你:)

标签: pipe gnuplot


【解决方案1】:

确保在告诉 gnuplot 读取数据文件之前刷新数据文件,否则,gnuplot 可能会看到一个空的数据文件:

fprintf(SomeFile, "%g\t", SomeNumber);
fflush(SomeFile);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2011-07-21
    • 2013-06-01
    • 2014-02-28
    相关资源
    最近更新 更多