3

MATLAB GUI アプリケーション内から、測定システムからデータを読み取る外部プログラム (Windows のコンソール アプリケーション) を起動しています。データは複数のファイルに保存され、外部プログラムが終了するとすぐに MATLAB アプリケーションによって処理されます。問題はこれです:

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

何時間も検索した後、MEX ファイルで SIGINT を検出する方法を示すhttp://www.caam.rice.edu/~wy1/links/mex_ctrl_c_trick/に出くわしました。MEX に外部プログラムを呼び出させるとうまくいくかもしれません (詳細についてはまだわかりませんが)。ただし、プログラムを停止するにはCtrl+が必要です。CGUI のプッシュ ボタンを介して SIGINT を送信するにはどうすればよいですか?

4

1 に答える 1

0

Cygwinで外部プログラムを起動すると、CygwinはそれにPIDを与えます。このPIDを使用すると、Cygwinのkillコマンドを使用して、プロセスにシグナルを送信できます。したがって、Cygwinからプログラムを開始します。MATLABでは、!ps(!は外部シェルコマンドを呼び出すことを意味します)を使用して、Cygwin PIDのリストを取得!kill -s signal pidし、プログラムに信号を送信できます。これをMATLABGUIから実行するには、ボタン呼び出しからのコールバックを許可します!kill

于 2011-12-07T23:11:38.767 に答える