2

Fortranで記述されたコンソールアプリのWindows共有場所を監視し、それらを起動し、STDOUTとSTDERRを監視し、他のサービスによって処理される共有場所に出力をコピーして戻す.NETサービスがあります。いくつかのインスタンスは、終了しているという出力を書き込んだ後、アプリがロックされたように見えました(終了することはありませんでした)。ローカルマシンで同じ入力で失敗したアプリを実行したところ、同じメモリの割り当てを2回解除しようとしたために、メモリ破損エラーが発生したことがわかりました。Windowsエラーダイアログが表示されました。私のサービスはこれらのコンソールアプリをウィンドウレスアプリとして実行していましたが、Fortranコンソールアプリでエラーが発生した場合、ダイアログをクリックできるユーザーがいないため、サービスは「実行中」であると判断しました。

System.Diagnostics.Processを使用して、Windowsエラーダイアログを防ぐ方法はありますか?グローバルレジストリを変更せずにそれを防ぐ方法はありますか?この動作をグローバルにオフにしたくありません。

この問題をグーグルで検索して見つけたのは、ユーザーが1)適切なエラー処理(私が所有していないFortranコードでは実行できないもの)を作成するか、レジストリに変更を加える(私が考えるもの)必要があるということだけです。他のユーザーがサーバーをどのように使用しているかを制御できないため、間違っています)。

4

0 に答える 0