【Ruby3.x】trap()関数の使い方
trap関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
trap関数は、Rubyプログラムが特定のシグナルを受け取った際の動作を定義するために使用する関数です。シグナルとは、オペレーティングシステムがプログラムに送信する通知のようなもので、例えば、ユーザーがCtrl+Cを押してプログラムを中断しようとした際に送られる「SIGINT」や、プログラムの終了を要求する「SIGTERM」などがあります。
この関数を使用することで、通常の処理の流れを中断して、シグナルに応じた特別な処理を実行させることができます。例えば、プログラムが外部からの終了要求を受けた際に、開いているファイルを自動的に保存したり、データベース接続を安全に閉じたりするようなクリーンアップ処理を設定できます。これにより、予期せぬプログラムの終了によってデータが失われたり、リソースが適切に解放されないといった問題を避けることが可能になります。
trap関数は、監視したいシグナルの名前(例: "INT")と、そのシグナルが送られたときに実行するRubyコードをブロックまたは文字列で指定して利用します。また、シグナルのデフォルトの動作に戻したり、特定のシグナルを完全に無視するように設定することもできます。堅牢なアプリケーションを開発する上で、外部からの割り込みや終了要求に適切に対応し、プログラムの安定性を保つために重要な役割を果たします。
構文(syntax)
1trap(signal_name_as_symbol) { # シグナルを受け取った際に実行する処理 }
引数(parameters)
signal, handler = nil
- signal: 捕捉したいシグナル名を指定します(例: "INT", "HUP")
- handler = nil: シグナル発生時に実行する処理を指定するProcオブジェクト、またはnilを指定します。nilの場合はデフォルトのシグナルハンドラが設定されます。
戻り値(return)
String | Proc | nil
trapメソッドは、指定されたシグナルを受け取った際に実行される処理を登録します。その戻り値は、登録された処理を表すProcオブジェクト、または処理の実行結果であるString、あるいは処理が登録されなかった場合のnilとなります。