Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Process::Status::termsig()メソッドの使い方

termsigメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

termsigメソッドは、Process::Statusオブジェクトに保持されている、子プロセスがシグナルによって終了したかどうか、およびそのシグナルの番号を取得するメソッドです。Rubyにおいて、Process::Statusオブジェクトは、Process.waitやバッククォート(``)などで外部コマンドを実行した際に、子プロセスの終了に関する詳細な情報(終了ステータス、シグナルなど)をカプセル化して返します。

このtermsigメソッドは、プロセスが何らかのシグナルによって終了した場合に、そのシグナルを識別する数値(整数)を返します。シグナルとは、オペレーティングシステムがプロセスに対して送る特別なメッセージのことで、例えばプログラムの終了を促すSIGTERMや強制的に停止させるSIGKILLなどがあります。このメソッドを使うことで、プログラムは子プロセスがなぜ終了したのか、特にシグナルが原因であった場合にその具体的な種類を数値で知ることができます。

もし子プロセスがシグナル以外の理由、例えば正常な終了ステータスやエラーコードによって終了した場合には、termsigメソッドはnilを返します。この挙動により、プログラムはシグナルによる終了と、それ以外の終了とを明確に区別することが可能です。システムエンジニアがプロセスの異常終了原因を特定する際や、外部プロセスの動作を監視する際に、このメソッドは重要な手がかりとなります。

構文(syntax)

1pid = fork do
2  Process.kill('TERM', Process.pid)
3end
4Process.wait(pid)
5status = $?
6status.termsig

引数(parameters)

引数なし

引数はありません

戻り値(return)

Integer または nil

プロセスがシグナルによって終了した場合、そのシグナル番号を整数で返します。シグナルによる終了でない場合は nil を返します。

関連コンテンツ