2016-01-06 60 views
0

我正在使用MATLAB并通过系统命令调用.exe。在标准输出的背景下运行MATLAB系统命令

[status,cmdout] = system(command_s); 

其中command_s是较早在我的脚本格式传递给所有.exe文件所需的选项的命令字符串。 .exe通常会通过Windows/DOS中的>重定向操作符写入.csv文件。相反,这个输出是在cmdout的地方,我稍后在MATLAB脚本中使用它。它工作正常,并且如预期的那样。我这样做是为了让进程只使用内存,并且不会向磁盘写入非常大的文件,然后必须从磁盘读取数据,然后在完成后将其删除。最后,它会保存一个.mat文件,通常在数百KB而不是10s/100s的.csv文件中(最后抛出一些不需要的数据)。

我遇到的问题是因为我正在处理大文件,可执行文件可能需要大量时间。执行此命令后,我通常需要等待大约2分钟。与此同时,我没有任何反馈意见知道它正在发展,并且我的系统没有冻结。我知道我可以将&符号添加到我的字符串末尾command_s,并在后台运行时运行MATLAB代码(或者像某些人会说的那样异步运行),但是这会引起外部窗口AND并使cmdout为空 - 如此我不能使用输出 - 迫使我在每次执行时都想坐在那里2分钟。

有什么办法可以在后台运行并从命令获取stdout?

+0

注:我创建了一个解决方法,我使用了一个MATLAB计时器对象,并在命令运行时使用中断来生成消息。不理想,但目前它的工作“足够好”。 – Trashman

回答

0

也许你可以尝试系统(command_s,' - 回声')?

+0

已经试过了,不起作用。 – Trashman