2011-07-13 11 views
2

Matlab GUIアプリケーションの中から、測定システムからデータを読み取る外部プログラム(Windows上のコンソールアプリケーション)を開始しています。データは、外部プログラムが終了すると直ちにMatlabアプリケーションで処理されるいくつかのファイルに保存されます。Matlab GUI内からSIGINTを送信

外部プログラムは、コマンドラインで実行すると、SIGINTを発行することで(Ctrl + Cキーを押して)正常に停止させることができます。シグナルハンドラはSIGINTをトラップし、プログラムをシャットダウンします。 Matlab GIUアプリ内で「中止」ボタンを押すことでこれを行う方法はありますか?

何時間もの検索の後、私はhttp://www.caam.rice.edu/~wy1/links/mex_ctrl_c_trick/にMIGファイルのSIGINTを検出する方法を見つけました。 MEXの呼び出しを外部プログラムに任せることは可能かもしれませんが(詳細はまだわかりませんが)ただし、Ctrl + Cキーを押してプログラムを停止する必要があります。 GUIのプッシュボタン経由でSIGINTを送信するにはどうしたらいいですか?

+1

あなたはhttp://stackoverflow.com/questions/813086/can-i-send-a-ctrl-c-sigint-to-an-application-on-windowsを見ましたか?あなたはWindowsの下にいると言いましたか? –

+0

可能な複製[Matlab:CTRL + Cは何を実装するのですか?コード内で実装します](http://stackoverflow.com/questions/10033078/matlab-implementing-what-c​​trlc-does-but-in-the-code) – Jonas

答えて

0

cygwinで外部プログラムを起動すると、cygwinはそのプログラムにpidを与えます。このpidを使用すると、cygwins killコマンドを使用してシグナルをプロセスに送信できます。だから、cygwinからプログラムを起動してください。 Matlabでは、!ps(!は外部シェルコマンドを呼び出すことを意味します)を使用してcygwin pidのリストを取得し、次に!kill -s signal pidを使用してシグナルをプログラムに送信できます。それをMatlab GUIから実行させるには、いくつかのボタン呼び出しからのコールバックをkill!killします。

関連する問題