5.4.10 ジョブの強制停止処理
JP1/AJS3は,ジョブの強制終了要求や,JP1/AJS3のサービスの強制停止要求を受け付けた場合に,実行中のジョブを強制停止します。
(1) 実行ホストがWindowsの場合
強制停止対象となるプログラム(実行先のエージェントホストがWindowsの場合)を次に示します。
-
JP1/AJS3から直接起動したプログラム(ジョブ)
-
jp1execコマンドで起動したプログラム(コマンド)
これらのプログラムの停止処理は,Win32APIのTerminateProcess関数を実行します。TerminateProcess関数の仕様については,Windowsの資料を参照してください。ユーザープログラムから起動されたプログラム(子プロセス)については停止処理を実行しません。
(2) 実行ホストがUNIXの場合
強制停止対象となるプログラム(実行先のエージェントホストがUNIXの場合)を次に示します。
-
JP1/AJS3から直接起動したプログラム(ジョブ)
-
ユーザープログラムから起動されたプログラム(ただし,setpgrpシステムコールなどでプロセスグループを変更している場合は停止されません)
これらのプログラムの停止処理は,そのプロセスグループに対してSIGKILLを送信することで実行されます。プロセスグループとSIGKILLの詳細については,UNIXのプロセス制御に関する資料を参照してください。
(3) JP1/Scriptで作成されたジョブの強制停止
JP1/AJS3からJP1/Scriptで作成されたジョブプロセス(拡張子が.spt)を強制終了する場合,JP1/Scriptのスクリプト制御インタフェース(SPTHTerminate)が使用されます(スクリプト制御インタフェースについては,マニュアル「JP1/Script(Windows(R)用)」を参照してください)。このインタフェースによって,JP1/Scriptのプロセス(.spt)から起動した子プロセスも終了されます。
なお,起動した子プロセスが,JP1/Scriptのプロセス(.spt)なのか,またはJP1/Scriptのプロセス(.spt)以外なのかによって終了される範囲が変わってきます。具体的には次の表のようになります。
パターン |
呼び出し順序 |
JP1/AJS3プロセス(呼び出し順序が1のプロセス)が 強制終了した場合に終了されるプロセスの範囲 |
---|---|---|
パターン1 |
|
呼び出し順序が3のプロセスまで終了されます。 |
パターン2 |
|
呼び出し順序が4のプロセスまで終了されます。 |
パターン3 |
|
呼び出し順序が3のプロセスまで終了されます(呼び出し順序が4のプロセスは終了されません)。 |
ただし,JP1/AJS3からの強制終了要求から30秒経過してもJP1/Scriptプロセスが終了しない場合は,Win32 APIのTerminateProcess関数を使用してJP1/Scriptプロセスを強制終了します。TerminateProcess関数を使用した場合,子プロセスは終了されませんので,上記の各パターンの呼び出し順序2のJP1/Scriptプロセスだけが終了されることになります。