我正在使用MATLAB并通过系统命令调用.exe。
[status,cmdout] = system(command_s);其中,command_s是一个命令字符串,它在我的脚本前面格式化,以便将所有需要的选项传递给.exe。.exe通常会通过>重定向操作符写入到.csv文件中。相反,此输出将发送到cmdout,稍后我将在MATLAB脚本中使用它。它工作正常,正如预期的那样。我这样做是为了让进程只使用内存,而不是将一个非常大的文件写入磁盘,然后必须从磁盘读取该文件,然后在我完成后将其删除。最后,它会保存一个通常大小为几百KB的.mat文件,而不是像.csv文件那样大小为10s/100s的.mat文件(最后会丢弃一些不需要的数据)。
我遇到的问题是,因为我正在处理大文件,所以可执行文件可能会花费大量的时间。执行此命令后,我通常需要等待大约2分钟。在此期间,我没有得到任何反馈,我知道它正在进步,我的系统没有死机。我知道我可以将&符号添加到字符串command_s的末尾,并在代码在后台运行时运行MATLAB代码(或者像一些人所说的异步运行),但这会打开一个外部窗口,并使cmdout为空-因此我不能使用输出-迫使我在那里坐2分钟,思考每次它执行的情况。
有没有办法在后台运行并从命令中获取stdout?
发布于 2016-01-07 15:12:51
也许你可以试试系统(command_s,'-echo')?
https://stackoverflow.com/questions/34638369
复制相似问题