- fork -> Integer | nil[permalink][rdoc][edit]
- fork { ... } -> Integer | nil
- 
fork(2) システムコールを使ってプロセスの複製を作ります。親プロセスでは子プロセスのプロセスIDを、子プロセスでは nil を返します。ブロックを指定して呼び出した場合には、生成した子プロセスでブロックを評価します。 fork 前に STDOUT と STDERR を IO#flush します。 - [EXCEPTION] NotImplementedError:
- 実行環境がこのメソッドに対応していないとき発生します。
 ブロックを指定しなかった場合 if child_pid = fork puts "parent process. pid: #{Process.pid}, child pid: #{child_pid}" # => parent process. pid: 81060, child pid: 81329 # 親プロセスでの処理 # ... # 子プロセスの終了を待って終了。 Process.waitpid(child_pid) else puts "child process. pid: #{Process.pid}" # => child process. pid: 81329 # 子プロセスでの処理 sleep(1) endブロックを指定した場合 child_pid = fork do puts "child process. pid: #{Process.pid}" # => child process. pid: 79602 # 子プロセスでの処理 sleep(1) end puts "parent process. pid: #{Process.pid}, child pid: #{child_pid}" # => parent process. pid: 79055, child pid: 79602 # 親プロセスでの処理 # ... # 子プロセスの終了を待って終了。 Process.waitpid(child_pid)[SEE_ALSO] IO.popen,IO.pipe,Kernel.#at_exit,Kernel.#exit!, fork(2)