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

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

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

作成日: 更新日:

基本的な使い方

メソッドはProcess::Statusオブジェクトが保持する内部的な終了ステータス値を右にビットシフトするメソッドです。

Process::Statusオブジェクトは、Rubyプログラムから起動された子プロセスが終了した際の詳しい状態を表すために使用されます。このオブジェクトが内部的に保持する終了ステータス値は、単にプログラムの終了コードを示すだけでなく、子プロセスがシグナルによって停止したのか、正常に完了したのかといった、複数の情報がビット単位で組み合わされた一つの整数値として表現されています。

この>>メソッドは、Process::Statusオブジェクトが持つ内部の整数値を、引数として指定されたビット数だけ右にシフトする操作を実行します。これは、コンピュータが数値を2進数で扱う際に、そのビット列を右方向にずらすことを意味します。この操作により、整数値の中に含まれる多様な情報のうち、特定のビット位置に格納されている必要な情報だけを取り出したり、逆に不要な情報を除去したりすることが可能になります。

例えば、UNIX系のオペレーティングシステムでは、子プロセスの終了ステータスの下位のビットにシグナル情報が、上位のビットにプログラムの実際の終了コードが格納されることがあります。>>メソッドを利用することで、下位のシグナル情報を切り捨てて、プログラムが返した純粋な終了コード部分だけを効率的に取得するといった応用ができます。システムエンジニアが子プロセスの詳細な終了状態を解析する際に非常に役立つメソッドです。

構文(syntax)

1pid, status = Process.wait2(spawn("exit 42"))
2result = status >> 8

引数(parameters)

bits

  • bits: 整数: 取得したい終了コードのビットを指定します

戻り値(return)

Integer

このメソッドは、実行されたプロセスの終了ステータスを整数で返します。

関連コンテンツ