【Ruby3.x】fork()関数の使い方
fork関数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
fork関数は、現在のプログラムの実行単位であるプロセスを複製し、新しいプロセスを作成するために実行する関数です。この関数は、オペレーティングシステムが提供するforkシステムコールを呼び出し、呼び出し元のプロセス(親プロセス)とほぼ同じ状態を持つ新しいプロセス(子プロセス)を生成します。
fork関数が正常に実行されると、親プロセスでは新しく作成された子プロセスのプロセスID (PID) が返されます。一方、子プロセスではnilが返されます。これにより、プログラム内で親プロセスと子プロセスそれぞれの処理を明確に分岐させることができます。
もしfork関数にブロックが渡された場合、そのブロック内のコードは子プロセスでのみ実行されます。ブロックが渡されない場合は、親プロセスと子プロセスはfork関数の呼び出し直後から、それぞれ独立して同じコードを実行し続けます。
主に、時間のかかる処理をバックグラウンドで実行したり、並行して複数のタスクを処理したりする際に利用されます。子プロセスは親プロセスのメモリ空間やファイルディスクリプタなどを引き継ぎますが、その後は独立して動作するため、プロセス間でデータを共有するには、専用の通信メカニズムを利用する必要があります。
構文(syntax)
1fork do 2 # 子プロセスで実行されるコードを記述します 3end
引数(parameters)
引数なし
引数はありません
戻り値(return)
Integer または nil
Rubyのforkメソッドは、新しいプロセスを生成し、そのプロセスのプロセスIDを返します。子プロセスでは0が返され、親プロセスでは生成された子プロセスのプロセスIDが整数で返されます。
また、プロセス生成に失敗した場合にはnilが返されます。