まつもと ゆきひろです

In message "[ruby-list:26156] fork problem?"
    on 00/11/25, Tanaka Akira <akr / m17n.org> writes:

|ふと気がついたのですが、fork した子プロセス内で例外が発生すると、外側
|の ensure 節が実行されるようです。

|これは仕様でしょうか?
|(Thread だと実行されないので仕様だとしたら非対称だな、とは思う。)

仕様ではないです。例外が発生する場合のことをすっかり忘れてた
だけです。Thread同様、例外は飲み込むこととします。

|あと、fork した子プロセス内で、(exec 前に)いくつかのファイルを close
|したいのですが、そのファイルを使っているスレッドが他にあると close 時
|にそのスレッドで例外が発生してしまいます。これを防ぐ方法はないでしょう
|か?
|
|close-on-exec すればいいのではないか、とも思ったのですが、socket など
|は内部的に dup して 2つ file descriptor を使っているようで、 dup した
|ものに close-on-exec を設定することができませんでした...

むむ、ちょっとシチュエーションが想像しきれませんでした。なん
らかの対応をしたいのですが、現時点ではどのような対応が望まし
いのか判断できません。

                                まつもと ゆきひろ /:|)