history

青木日記 RSS

<前の日 | この月 | 次の日>

2004-09-04

forkをbreak

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

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS