何の意味があるのかよくわからないが、 Ruby の fork ブロックから break してみた。
% test-all-ruby -e 'fork { break }; Process.wait' ruby-1.4.6: /tmp/rbG3fnQt:1:in `wait': No child processes (Errno::ECHILD) from /tmp/rbG3fnQt:1 ruby-1.6.0: -e:1:in `wait': No child processes (Errno::ECHILD) from -e:1 ruby-1.6.1: -e:1:in `wait': No child processes (Errno::ECHILD) from -e:1 ruby-1.6.2: -e:1:in `fork': unexpected break ruby-1.6.3: -e:1:in `fork': unexpected break ruby-1.6.4: -e:1:in `fork': unexpected break ruby-1.6.5: -e:1:in `fork': unexpected break ruby-1.6.6: -e:1:in `fork': unexpected break ruby-1.6.7: -e:1:in `fork': unexpected break ruby-1.6.8: -e:1:in `fork': unexpected break ruby-1.8.0: -e:1:in `fork': unexpected break ruby-1.8.1: -e:1:in `fork': unexpected break ruby: -e:1:in `fork': unexpected break
まあ、そんなもんかねえ。
じゃあ next はどうよ?
% test-all-ruby -e 'fork { next }; Process.wait' ruby-1.4.6: ruby-1.6.0: ruby-1.6.1: ruby-1.6.2: ruby-1.6.3: ruby-1.6.4: ruby-1.6.5: ruby-1.6.6: ruby-1.6.7: ruby-1.6.8: ruby-1.8.0: ruby-1.8.1: ruby:
そりゃそうか。じゃあ redo ……
% test-all-ruby -e 'fork { redo }; Process.wait'
って、無限ループじゃん。
(23:16)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.