「シグナル(割り込み)」の編集履歴(バックアップ)一覧はこちら

シグナル(割り込み)」(2010/02/25 (木) 00:56:52) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

** シグナル処理プログラムの記述方法(全体の流れ) + 処理対象とするシグナル番号を選びます。 + シグナル受信時の処理内容を、ユーザ定義関数として記述します。 -- ユーザ定義関数内では、第1引数がシグナル番号となります。 -- ユーザ定義関数内での、使用できる関数に制約はありません。 + 定義したユーザ関数をシグナルハンドラとして設定します。 &br() ** シグナルモニタの例 > 受信したシグナル番号を表示する例です。このため、処理対象とするシグナル番号は、ユーザー側にてキャッチ可能な全てシグナル番号とします。なお、このプログラムは CTRL+C でも終了しなくなるため、CTRL+C 受信時には KILL -9 による終了方法を表示することとしました。 > なお、ここではシグナル待ち受け時間中は pause() 関数で待つこととしましたが、他の処理を実行させていても問題はありません。 # シグナルハンドラとなるユーザ定義関数を2つ定義します。 # その1:CTRL+C 受信時のシグナルハンドラです。 def disp_signumber2(ival){ print("Signal Received!! [%d]\n",ival) print("終了の仕方:当プロセス(%d)に、シグナル9番を送信して下さい。\n",PID); print("( kill -9 %d )\n",PID); } # その2:他のシグナル受信時のシグナルハンドラです。 def disp_signumber (ival){ print("Signal Received!! [%d]\n",ival) } # シグナルハンドラを設定します。 for(i=1;i<NSIG;i++){ # i = シグナル番号です。(全てのシグナル番号を処理対象とします。) if(i==2) # CTRL+C 受信時のシグナルハンドラを設定します。 rx_signal(i,&disp_signumber2()) else # 他のシグナル受信時のシグナルハンドラを設定します。 rx_signal(i,&disp_signumber ()) } # シグナル待ち受けループに入ります。 while(TRUE){ # 繰り返しモニタ出来るように、無限ループとします。 pause() # シグナル待ち受け時はポーズで待ちます。 } &br() &br() &br()

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー