Matlab から外部プログラムを実行しようとしています:
cmdstr = sprintf('"%s\\myEXECUTABLE" "%s" -options',fullEXEpath, fullInputFilePath);
[status, res] = system(cmdstr);
「status = 1」、「res」の部分的なプログラム出力 (エラー メッセージはありません)、および出力ファイルがありません。
しかし、 & (アンパサンド) を使用してまったく同じコマンドを実行します。
cmdstr = sprintf('"%s\\myEXECUTABLE" "%s" -options &',fullEXEpath, fullInputFilePath);
[status, res] = system(cmdstr);
dosコマンドウィンドウを介したバックグラウンドでの意味は、問題なく機能します(ステータスは0に等しく、出力ファイルが作成されます)。
ウイルス対策が Matlab 経由でプログラムの実行をブロックしている可能性があることをどこかで見たことがありますが、私はエンドポイント ユーザーであるため、それを無効にすることはできません。
「&」を使用すると、GUI がコマンド ウィンドウを開いてバックグラウンドで実行され、Matlab コードがすぐに再開されます。
コマンド ウィンドウを開くことはできますが、MATLAB コードで出力ファイルを使用するため、Matlab をすぐに再開することはできません。
外部プログラムが終了したことを確認する方法はありますか? 私は簡単に試しました:
while (status) %waiting for system to return status = 0
disp 'waiting...';
end
しかし、まだ完了前に「status = 0」で戻っているようです...
というか、& を回避する方法はありますか?
どんな答えでも大歓迎です。