by shigemk2

当面は技術的なことしか書かない

Process.wait2

Process

Process.wait2も、終了した子プロセスのpidを返す。ただし、

wait2 は、その戻り値が pid と $? の配列であ る点だけが異なります。

# -*- coding: utf-8 -*-
# 子プロセスを5つ生成する
5.times do
  fork do
    # 子プロセスごとにランダムな値を生成する
    # もし偶数なら 111 を、奇数なら 112 を終了コードとして返す
    if rand(5).even?
      exit 111
    else
      exit 112
    end
  end
end

5.times do
  # 生成した子プロセスが終了するのを待つ
  pid, status = Process.wait2

  # もし終了コードが 111 なら、
  # 子プロセス側で生成された値が偶数だと分かる
  if status.exitstatus === 111
    puts "#{pid} encountered an even number!"
  else
    puts "#{pid} encountered an odd number!"
  end
end

http://tatsu-zine.com/books/naruhounix