我正在使用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?
注:我創建了一個解決方法,我使用了一個MATLAB計時器對象,並在命令運行時使用中斷來生成消息。不理想,但目前它的工作「足夠好」。 – Trashman