【Ruby3.x】exec()関数の使い方
exec関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
exec関数は、指定された外部コマンドを実行する関数です。この関数は、Rubyスクリプトの実行中に別のプログラムを起動し、現在のRubyプロセスをその外部コマンドに置き換えるという、非常に特徴的な動作をします。つまり、execが呼び出されると、現在のRubyプログラムはそこで実行を終了し、起動された外部コマンドがそのRubyプロセスの代わりに実行され続けます。外部コマンドが正常に起動された場合、exec関数は呼び出し元に戻ることはありません。
引数には、実行したいコマンドと、そのコマンドに渡す引数を指定します。コマンドと引数を単一の文字列として渡すこともできますし、コマンドを最初の引数とし、その後に続く引数としてそれぞれの引数を配列形式で渡すことも可能です。例えば、exec "ls", "-l"のように使用します。
もし外部コマンドの起動に失敗した場合、例えば指定されたコマンドが見つからない場合などには、Errno::ENOENTなどの例外が発生し、exec関数はエラーを報告してRubyプログラムの実行を継続します。
このexec関数は、現在のプログラムを別のプログラムに「引き渡す」ような場面で利用されます。例えば、Rubyで書かれた起動スクリプトから、メインとなる別のプログラムを起動して、元のRubyスクリプトは終了させる場合などに有効です。system関数やバッククォート (``) とは異なり、外部コマンドの実行結果をRubyプログラム内で受け取ったり、外部コマンドの終了を待ってRubyプログラムの実行を再開したりすることはありません。プロセスを完全に置き換える点が最大の特徴であり、利用する際にはこの点を理解しておく必要があります。
構文(syntax)
1exec("command_line_string")
引数(parameters)
*rest
- rest: 実行するコマンドとその引数を文字列の配列として指定します。
戻り値(return)
戻り値なし
戻り値はありません