From: KOSAKI Motohiro Date: 2011-11-15T01:41:55+09:00 Subject: [ruby-dev:44867] Re: [Backport93 - Backport #5429] 64ビットなFreeBSDのioctlでビット31が1なリクエストの時の不具合 2011年11月14日11:25 Tomoyuki Chikanaga : > > Issue #5429 has been updated by Tomoyuki Chikanaga. > > > あいざわさんのパッチだと、Tempfile.new がブロックを yield しないので、assert を通っていないだけのようです。 > > SnowLeopard の man fcntl によると > > [EINVAL] Cmd is F_DUPFD and arg is negative or greater than the maximum allowable number (see getdtablesize(2)). > > で getdtablesize() は 256 を返すのでとりあえず 500 -> 255 にすると通るようになりました。 > 500 というのは他の open 済みの fd と重複しない程度に大きな数字ということだと思うので、とりあえず 255 にしてしまってもいいでしょうか。ちゃんと空き fd を確保してそこに dup するようにしたほうがいいのかもしれませんが。 うーん、あんまり凝ったことをするとまた別のOSの制限にひっかかるかもしれないので 255でお願いできるとうれしいなあ。 fcntlのテストが全然ないから追加したんだけど、ポータブルに動きそうなコマンドって 難しいのよねえ・・