我有一个脚本需要一些时间才能执行。我使用 Matlab 引擎在 C++ 函数中启动它。为了监控脚本的执行,我想在其中添加一些disp('still alive')
。但是,它不起作用,由 engOpen 打开的 matlab 命令窗口中没有显示任何内容(是的,我确定脚本正在运行,因为我在执行结束时获得了输出文件)。
知道如何让它工作吗?
此外,是否可以在脚本运行时使用 engOutputBuffer 在 Windows 命令中获取此类心跳?
谢谢 !
我有一个脚本需要一些时间才能执行。我使用 Matlab 引擎在 C++ 函数中启动它。为了监控脚本的执行,我想在其中添加一些disp('still alive')
。但是,它不起作用,由 engOpen 打开的 matlab 命令窗口中没有显示任何内容(是的,我确定脚本正在运行,因为我在执行结束时获得了输出文件)。
知道如何让它工作吗?
此外,是否可以在脚本运行时使用 engOutputBuffer 在 Windows 命令中获取此类心跳?
谢谢 !
使用engOutputBuffer
,engEvalString
和printf
将输出输出到控制台(到 Windows 命令窗口,而不是 MATLAB 命令窗口)。
如果要监视脚本的进度,可以在 C 代码中打开 m-script 文件并使用engEvalString
. 在每次执行命令printf
缓冲区内容到控制台窗口之后。这种方法的主要问题是如何在打开的 m-script 文件中隔离(解析)命令,但是如果您期望某些类型的脚本,可以这样做。
实现消息监视的另一种方法是打开一个线程,之后engOutputBuffer
将检查缓冲区的内容并与printf
在主线程中启动的 m 脚本的执行并行执行。
在mathworks(页面底部附近)查看有关如何将 MATLAB 消息输出到控制台(Windows 命令)的示例。