Hitachi

JP1 Version 11 JP1/Advanced Shell 


9.3.27 trapコマンド(シグナルや強制終了要求を受けたときの動作を設定する)

trapコマンドはUNIX版とWindows版で提供する機能が異なります。UNIX版で提供する機能については,「(1) trapコマンド【UNIX版】」を参照してください。Windows版で提供する機能については,「(2) trapコマンド【Windows版】」を参照してください。

〈この項の構成〉

(1) trapコマンド【UNIX版】

形式

trap [action][signal ...]

機能

シグナルを受け取ったときの動作を設定します。signalに指定されたシグナルをシェルが受け取ると,actionに指定された動作を実行します。

引数を指定しないで実行した場合,シグナルに設定されている動作を次の形式で標準出力に出力します。

シグナル種別

出力形式

名称が定義されているシグナルの場合

trap -- action "先頭のSIGを除いたシグナル名"

名称が定義されていないシグナルの場合

trap -- action UNKNOWN SIGNAL

1つのシグナル番号に複数の名称が定義されているシグナルに対する動作を次に示します。

【Linux限定】

シグナル名称

別名称

trapコマンドによるactionの設定

SIGSYS

SIGUNUSED

SIGSYS

設定できます

SIGUNUSED

設定できます

拡張機能では,SIGUNUSEDではなく,SIGSYSを主なシグナル名称として扱っているため,trapコマンドでもSIGSYSをシグナル名称として扱います。

【AIX限定】

シグナル名称

別名称1

別名称2

trapコマンドによるactionの設定

SIGABRT

SIGLOST

SIGIOT

SIGABRT

設定できます

SIGLOST

設定できます

SIGIOT

設定できます

SIGIO

SIGPOLL

なし

SIGIO

設定できます

SIGPOLL

設定できます

【HP-UX,Solaris限定】

シグナル名称

別名称

trapコマンドによるactionの設定

SIGABRT

SIGIOT

SIGABRT

設定できます

SIGIOT

設定できます

SIGIO

SIGPOLL

SIGIO

設定できます

SIGPOLL

設定できます

また,1つのシグナル番号に複数の名称が定義されているシグナルに対して,trapコマンドでactionを設定した場合,出力するシグナル名はどれか1つのシグナル名になります。

引数

action

指定されたシグナルを受け取ったときの動作を指定します。

actionにハイフンを指定した場合,signalに一致する指定済みのトラップがリセットされ,デフォルトに戻ります。actionを指定しないで,signalにシグナル番号を指定した場合も同様にデフォルトに戻ります。

actionに""を指定した場合,signalに指定されたシグナルを無視(SIG_IGN)します。

ただし,SIGTERMについては,actionに""を指定しても,シグナルを無視(SIG_IGN)しません。

指定した場合,現在設定されているactionを変更しないで,trapコマンドは正常終了します。

signal

trapの対象となるシグナルを指定します。

signalにはシグナル番号またはシグナル名称を指定します。シグナル名称には,シグナル名から先頭の「SIG」を除いた名称を指定してください(例:SIGINTであれば「INT」と指定する)。それぞれのシグナルの仕様については,使用しているOSのマニュアルを参照してください。

なお,SIGTERMを指定した場合の動作は,環境設定パラメーターTRAP_ACTION_SIGTERMの指定に従います。詳細については,「7. 環境ファイルで設定するパラメーター」の「TRAP_ACTION_SIGTERMパラメーター(ジョブコントローラが強制終了要求を受けたときの動作を定義する)」を参照してください。

signalはスペースで区切って複数のシグナルを指定できます。また,signalには0,"EXIT"または"ERR"を指定できます。

signalに0または"EXIT"を指定し,trapコマンドを実行した場合

シェル終了時にactionに指定したコマンドを実行します。

signalに"ERR"を指定し,trapコマンドを実行した場合

trapコマンド以降に実行した次に示すコマンドが0以外の終了コードで完了すると,actionに指定した動作を実行します。

・正規組み込みコマンド

・typesetコマンド

・関数内,および外部スクリプト内で書式不正によってエラーとなったreturnコマンド

AIXの場合,signalにSIGWAITINGは指定できません。SIGWAITINGを指定して実行した場合,エラー終了します。

終了コード

終了コード

意味

0

正常終了

1

エラー終了

注意事項

使用例

(2) trapコマンド【Windows版】

形式

trap [action][method

機能

強制終了要求を受けたときの動作を設定します。

TRAP_ACTION_SIGTERMパラメーターにTERMを指定した場合:

強制終了要求をジョブコントローラが受けたときの動作を設定できます。ジョブコントローラはmethodに指定された強制終了要求を受けると,actionに指定された動作を実行します。

methodにTERMでも15でもない強制終了要求を指定したとき,指定したactionが設定されないで,メッセージKNAX6718-Iを出力して,終了コード0を返して終了します。

引数を指定しないで実行した場合,強制終了要求に対して設定されている動作を次の形式で標準出力に出力します。

出力形式

trap -- action "強制終了の方法を示す文字列"

TRAP_ACTION_SIGTERMパラメーターにDISABLEを指定した場合:

メッセージKNAX6710-I を出力して,終了コード0を返して常に正常終了します。強制終了要求に対して処理はしません。

引数

action

強制終了要求を受けたときの動作を指定します。

actionにハイフンを指定した場合,methodに一致する指定済みのactionがリセットされ,methodに対しての動作定義(action)が無効になり,何も設定されていない状態に戻ります。actionを指定しないでmethodに15を指定した場合も同様に,methodに対しての動作定義(action)が無効になり,何も設定されていない状態に戻ります。

actionに""を指定した場合,現在設定されているactionを変更しないで,trapコマンドは正常終了します。

method

trapの対象となる強制終了の方法を指定します。

methodにはTERMまたは15を指定します。

TERMまたは15

TerminateProcessなどによるプロセス即時終了(例:JP1/AJSからの強制終了,taskkillコマンド)。

終了コード

終了コード

意味

0

正常終了

1

エラー終了

注意事項

使用例