なひです. > From: Tomoyuki Kosimizu [mailto:greentea / fa2.so-net.ne.jp] > Sent: Thursday, April 22, 1999 11:53 AM > まず、Threadなのですけど、下のコードを実行して、 > Ctrl-Dを入力しても、puts "die"が実行されないのですが、 > 何がおかしいのでしょうか? > > class MyThread > def doit > @live = true > Thread.start { > while @live > puts "live!" > sleep(1) > end > puts "die" # not executed > } > while (line = $stdin.gets) > end > @live = false この辺りで,生成したThreadが終了するのを待ってあげるのが いいと思います.sleepするとか,Thread.joinを使うとか. > end > end > > MyThread.new.doit / / / > 次はMarshalなのですけど、下の2つのプログラムをシェルで > `ruby dump.rb | ruby load.rb'とパイプで結んで > 実行したのですが、コンソールで文字化けを起こします。 > 他に何かやっておくことがあるのでしょうか? > > # dump.rb > class Foo > def to_s > 'foo' > end > end > Marshal.dump(Foo.new, $stdout) if $0 == __FILE__ Marshal.dump(Foo.new, $stdout) end としておくと,load.rbからのrequire時にdumpされなくなって, Marshalingされた内容が表示されずに済みます. # という話ではないかもしれません.^^;