关于printf:如何在运行脚本时使GNU Octave自动刷新结果

您所在的位置:网站首页 makefile中打印 关于printf:如何在运行脚本时使GNU Octave自动刷新结果

关于printf:如何在运行脚本时使GNU Octave自动刷新结果

#关于printf:如何在运行脚本时使GNU Octave自动刷新结果 | 来源: 网络整理| 查看: 265

在运行脚本功能时,由fprintf或disp命令产生的结果仅在执行结束(或停止)时才会显示在终端中。 fflush解决了该问题,但是每次打印后使用都很繁琐。有什么方法可以自动冲洗到终端吗?

使用版本3.8.1。

相关讨论 如何在Matlab或Octave中刷新disp的输出的可能重复项? 在这里,讨论似乎也指向图形。我的问题是如何激活以前在以前的版本和Matlab中具有的自动刷新行为。 这个问题中的讨论似乎是在谈论图形,因为相同的功能会刷新Matlab中的图形和io缓冲区。我向您保证,它将讨论您遇到的确切问题。 我认为您是对的,在这里已经给出了相同的答案。如果没有新的贡献可以丰富另一个问题的讨论,那么我将其删除。

要自动自动冲洗东西,请设置:

1page_output_immediately (1);

并在不使用寻呼机的情况下将其发送到标准输出,请设置:

1page_screen_output (0);

《 Octave》手册中有关于此主题的部分,"分页屏幕输出"。

您有两个主要选择:

每次打印后调用fflush(stdout())。 如果您的系统自动刷新stderr(例如Linux),请打印到stderr而不是stdout。

选项1通常更好,因为它对系统的依赖性较小。两种解决方案都可以使用varargin:

轻松package到您自己的打印功能中

1234function n = my_print(varargin)     n = fprintf(stdout(), varargin{:});     fflush(stdout()); end 相关讨论 这意味着到处输入烦人的fflush命令。在使用Linux时,我最初的问题更多是关于如何使系统自动刷新。病态地对其进行相应的编辑。 打印到stderr解决了我系统中fprintf命令的问题。不知道disp是否也可以发送到stderr,原则上它不起作用。 我建议将fprintf()package到您自己的函数中,以确保fflush()被调用。这保留了stderr的含义,并允许您通过管道传递为null来隐藏stdout。 @RyanTennill。这是一个极好的建议。我已将其合并到我的答案中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3