2011-06-24 4 views
0

を扱うコマンドプロンプトで、私は私もテキストに出力を印刷するためにリダイレクトを行うクラッシュ

oo 1 
oo 2 

を書くことができますので、私は、1または2として入力を受け取り、実行可能oo.exeを持って、MATLAB関数から実行ファイルを呼び出しますファイル。

MATLABのsystemコマンドを使用して同じことをしています。

system('oo 1 >> op.txt'); 
system('oo 1 >> op.txt'); 

.exeがクラッシュした場合を除いてすべて正常に動作します。 * .exeが最初の行でクラッシュすると、クラッシュポイントがop.txtになるまでテキストが印刷され、2番目の行(引数2)は正常に実行されます(引数2のクラッシュは想定されません)。 しかし、2行目が正常に実行されても、何も印刷されません。

しかし、コマンドプロンプトから2つの連続したコマンドで同じ操作を行うと、すべて正常に動作します。私はバッチファイルtest.batを書き、systemを使ってMATLABから呼び出すことでトリックを試みましたが、役に立たなかった。 実際、コマンドプロンプトからこのバットファイルを実行すると、2回目の実行時に、ファイルop.txtがロックされたというメッセージが表示されました。

これはすべて、クラッシュが発生した場合にのみ発生します。

誰にも提案はありますか?

+0

私はtest.batを直接ウィンドウコマンドプロンプトから呼び出してみましたが、同じ問題がありました。私は問題を解決することができませんでしたが、問題は、バッファが空であるかどうかにかかわらず、クラッシュのためにプログラムが終了するか、または破損するバッファに関係するようです。 –

答えて

0

システムコールの周りにtry catchを入れてください。それは、スクリプトをクラッシュさせるエラーを投げているようです。

try 
system('oo 1 >> op.txt'); 
catch 
end 

try 
system('oo 2 >> op.txt'); 
catch 
end 
関連する問題