C/400

85. 利用範囲が広がるシグナルの応用 (2)

シグナルが、どのように利用されているかの事例を紹介する。

1. HTTP サーバーの終了の終結処理

SPOOL-WRITER サーバーは HTTPサーバーであるが従来の HTTPサーバーではユーザーによって
終了が指示されると各々の子プロセス ( ジョブ ) は ENDJOB コマンドによって終了していた。
しかし、これでは子プロセス ( ジョブ ) から見れば、自分は外部から強制終了( 異常終了 )されたのと
同じであり、必要な LR の終結処理を行なうことはできない。
これに対してシグナル割り込みによって終結関数を起動してから終了するようにすれば
終結処理を行なってからの正常な終了とすることができる。
実際の SPOOl-WRITER サーバーでは終了用のシグナルを受信すると JAVA ネィティブ環境( JNI )が
ロードされている場合は JNI をクローズしてからジョブを終了するようにしている。
一般の適用業務であれば適用業務サーバーの終結処理に利用することができる。

2. QTEMP 情報の通知

SPOOL-WRITER サーバーには、各々の子プロセス ( ジョブ ) におけるライブラリーQTEMP の内容を
依頼されたジョブに通知する機能がある。
次の画面が、その QTEMP を表示している様子である。

これは、子プロセス ( ジョブ ) に対して QTEMP 情報を要求するために子プロセス ( ジョブ ) に
シグナルを送ると受け取った子プロセス ( ジョブ ) が、自分の QTEMP 情報を戻すので
別のジョブからでも他のジョブとなる子プロセス ( ジョブ ) の QTEMP 情報を参照することが
できるというわけである。

この他にも待機が必要なジョブや対話式で実行されているジョブに対しても他のジョブから
シグナルを使って様々な割り込みをかけることができる。
例えば対話式のジョブで実行中のユーザーに気づかれずに実行中のジョブの情報を
取得することも可能である。