Hiroyuki Komatsu
komat****@taiya*****
2004年 1月 21日 (水) 02:25:23 JST
小松です。 なるほど、了解しました。 > しかしruby_rを使えば上記の実行は大丈夫です。 よく分かっていないのですが、ruby と ruby_r という 2つのコマンドが あって /usr/local/bin/ruby と /usr/local/bin/ruby_r のように 共存しているのか、ruby と ruby_r の 2つのパッケージがあって ruby コマンドの実体はどちらのパッケージが提供する実体への エイリアスなのか、どちらでしょうか。 もし前者で、ruby_rというコマンドが別にあるのであれば、configure で ruby へのパスを指定できた方がうれしいと思いますので、そのようにします。 -- 小松弘幸 ----------------------- http://taiyaki.org/ At Tue, 20 Jan 2004 20:57:23 +0900, Gen Otsuji wrote: > > $stdout.sync = true > > while line = $stdin.gets do > > p line > > end > > > > というコードは通りますでしょうか? > > 通りました。 > しかし調べた結果,次を実行すると > ----------test.rb---------- > #!/usr/local/bin/ruby > require 'sary' > while line = $stdin.gets do > p line > end > --------------------------- > % ./test.rb > ./test.rb:3:in `gets': Resource temporarily unavailable(Errno::EAGAIN) > from ./test.rb:3 > > 結果がこうなりました。 > しかしruby_rを使えば上記の実行は大丈夫です。 > どうもFreeBSD特有の問題であるようでした。FreeBSD4.xではスレッドライブラ > リがlibc_rというものなのですが,それが標準ライブラリのlibcと排他的だったた > めlibc_rをリンクしたsary等を使うにはruby_rを使わなければならなかったの > です。5.xではスレッドライブラリがlibc_r,libthr,libkseの三つあるように > なっていて排他的でもなくなっています。しかし古いlibc_rがportsでは標準とな > っています。libc_r自体も排他的ではなくなったのですが、まだバグがあってlibc, > libc_rを混ぜて使うとstdioが変になることがあるということのようです。 > getsのエラーはこのためのようです。ということをFreeBSDのえらい人に知らされ > ていたのですが、忘れていました。というわけでruby_rをまだ使い続ける方が > 良さそうです。 > お騒がせ致しました。