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

【Ruby3.x】popen()関数の使い方

popen関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

popen関数は、Rubyプログラムから外部コマンドを実行し、そのコマンドとの間でデータをやり取りするためのパイプを確立する関数です。これにより、外部コマンドの標準入出力(stdin/stdout/stderr)をRubyプログラムから制御し、データの送受信を行うことが可能になります。

この機能は、OSのシステムコマンドの実行結果処理や、他のスクリプトへのデータ受け渡しなど、Rubyプログラムと外部システムとの連携を実現する際に広く利用されます。例えば、外部プログラムの出力をRubyで解析したり、Rubyから外部プログラムへデータを送信して処理させたりといったことが可能です。

popen関数は通常ブロックを伴って使用され、ブロック内では外部コマンドとの接続を表すIOオブジェクトを操作します。パイプはブロック終了時に自動で閉じられるため、クローズ処理を意識する必要がありません。ブロックを省略して呼び出した場合は、IOオブジェクトと子プロセスのプロセスID(PID)が配列で返されます。この場合は、開発者が明示的にIO#closeメソッドを呼び出して接続を閉じる必要があります。Rubyで外部プログラムとの連携が必須となるシステム開発において、非常に強力で汎用性の高い機能の一つです。

構文(syntax)

1Kernel.popen(command_string) do |pipe|
2  # pipe オブジェクトを通じて外部プロセスとの標準入出力を行う
3end

引数(parameters)

command, mode = "r", options = nil

  • command: string: 実行するコマンドライン文字列
  • mode = "r": string = "r": 読み込みモード ("r") または書き込みモード ("w") を指定する文字列。デフォルトは読み込みモードです。
  • options = nil: hash | nil = nil: 実行するプロセスに関する追加オプションを指定するハッシュ。デフォルトは nil です。

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ