JP1/Advanced Shell

[目次][用語][索引][前へ][次へ]


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 設定できます

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

拡張機能でactionを登録したシグナルに関しては,シグナルに設定されている動作を表示しません。

引数

action
指定されたシグナルを受け取ったときの動作を指定します。actionにハイフンを指定した場合,signalに一致する指定済みのトラップがリセットされ,デフォルトに戻ります。actionを指定しないで,signalを指定した場合も同様にデフォルトに戻ります。
actionに""を指定した場合,signalに指定されたシグナルを無視(SIG_IGN)します。

signal
trapの対象となるシグナルを指定します。signalにはシグナル番号またはシグナル名称を指定します。シグナル名称には,シグナル名から先頭の「SIG」を除いた名称を指定してください(例:SIGINTであれば「INT」と指定する)。それぞれのシグナルの仕様については,使用しているOSのマニュアルを参照してください。ただし,SIGTERMは指定できません。signalはスペースで区切って複数のシグナルを指定できます。
また,signalには0,"EXIT"または"ERR"を指定できます。signalに0または"EXIT"を指定し,trapコマンドを実行した場合,シェル終了時にactionに指定したコマンドを実行します。"ERR"を指定し,trapコマンドを実行した場合,trapコマンド以降に実行したtypesetコマンドおよび特殊組み込みコマンド以外のコマンドが0以外の戻り値で完了すると,actionに指定した動作を実行します。
AIXの場合,signalにSIGWAITINGは指定できません。SIGWAITINGを指定して実行した場合,エラー終了します。

戻り値

戻り値 意味
0 正常終了
1 エラー終了

注意事項

使用例

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.