何の意味があるのかよくわからないが、 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)