8.2.1 ジョブの強制停止処理

JP1/AJS2は,ジョブの強制終了要求や,JP1/AJS2のサービスの強制停止要求を受け付けた場合に,実行中のジョブを強制停止します。

<この項の構成>
(1) 実行ホストがWindowsの場合
(2) 実行ホストがUNIXの場合
(3) JP1/Scriptで作成されたジョブの強制停止

(1) 実行ホストがWindowsの場合

強制停止対象となるプログラム(実行ホストがWindowsの場合)を次に示します。

これらのプログラムの停止処理は,Win32APIのTerminateProcess関数を実行します。TerminateProcess関数の仕様については,Windowsの資料を参照してください。ユーザープログラムから起動されたプログラム(子プロセス)については停止処理を実行しません。

(2) 実行ホストがUNIXの場合

強制停止対象となるプログラム(実行ホストがUNIXの場合)を次に示します。

これらのプログラムの停止処理は,そのプロセスグループに対してSIGKILLを送信することで実行されます。プロセスグループとSIGKILLの詳細については,UNIXのプロセス制御に関する資料を参照してください。

(3) JP1/Scriptで作成されたジョブの強制停止

JP1/AJS2からJP1/Scriptで作成されたジョブプロセス(拡張子が.spt)を強制終了する場合,JP1/Scriptのスクリプト制御インタフェース(SPTHTerminate)が使用されます(スクリプト制御インタフェースについては,マニュアル「JP1/Script(Windows(R)用)」を参照してください)。このインタフェースによって,JP1/Scriptのプロセス(.spt)から起動した子プロセスも終了されます。

なお,起動した子プロセスが,JP1/Scriptのプロセス(.spt)なのか,またはJP1/Scriptのプロセス(.spt)以外なのかによって終了される範囲が変わってきます。具体的には次の表のようになります。

表8-11 プロセスが終了される範囲

パターン呼び出し順序JP1/AJS2プロセス
(呼び出し順序が1のプロセス)が
強制終了した場合に
終了されるプロセスの範囲
パターン1
  1. JP1/AJS2プロセス
  2. JP1/Scriptプロセス
  3. JP1/Scriptプロセス以外のプロセス
呼び出し順序が3のプロセスまで終了されます。
パターン2
  1. JP1/AJS2プロセス
  2. JP1/Scriptプロセス
  3. JP1/Scriptプロセス
  4. JP1/Scriptプロセス以外のプロセス
呼び出し順序が4のプロセスまで終了されます。
パターン3
  1. JP1/AJS2プロセス
  2. JP1/Scriptプロセス
  3. JP1/Scriptプロセス以外のプロセス
  4. JP1/Scriptプロセス以外のプロセス
呼び出し順序が3のプロセスまで終了されます(呼び出し順序が4のプロセスは終了されません)。

ただし,JP1/AJS2からの強制終了要求から30秒経過してもJP1/Scriptプロセスが終了しない場合は,Win32 APIのTerminateProcess関数を使用してJP1/Scriptプロセスを強制終了します。TerminateProcess関数を使用した場合,子プロセスは終了されませんので,上記の各パターンの呼び出し順序2のJP1/Scriptプロセスだけが終了されることになります。