强制c ++程序使用dos()向MATLAB命令窗口显示'synchronized'输出

时间:2011-09-23 09:36:19

标签: matlab command-window

我正在用dos('myprog.exe')在MATLAB中执行我的c ++编译程序。 myprog生成一些输出,只有在myprog.exe完成执行后才会打印到MATLAB命令窗口。

有没有办法强制MATLAB在myprog.exe生成输出时打印输出而不是最后?

1 个答案:

答案 0 :(得分:2)

<强> ANSWER 确保正确刷新c ++程序中的输出缓冲区。根据我的经验,有时可以在代码中插入额外的刷新命令(不仅仅是行尾命令):

std::cout << std::endl;

注意 您也可以尝试这样调用您的程序:

[status,result] = dos('myprog.exe','-echo') 
[status,result] = system('myprog.exe','-echo') 

matlab帮助说:“'echo'强制输出到命令窗口,即使它也被分配到变量中。”

然而,这可能不起作用,因为(再次matlab帮助): “控制台程序永远不会在后台执行。此外,MATLAB软件总是在继续执行之前等待stdout管道关闭。”这意味着,matlab可能会等到程序完成执行才会显示你控制台输出。在那种情况下,你无能为力。